Renamed and added an utility function to get basic attributes.
This commit is contained in:
parent
115608b2a5
commit
0cee4c3ffe
@ -1,39 +0,0 @@
|
||||
using System;
|
||||
using OpenTK.Graphics.OpenGL;
|
||||
namespace RecrownedGTK.Graphics {
|
||||
public class VertexArrayHandle : IDisposable {
|
||||
private bool disposed;
|
||||
private int handle;
|
||||
private bool begun;
|
||||
public VertexArrayHandle() {
|
||||
handle = GL.GenVertexArray();
|
||||
}
|
||||
|
||||
public void Begin() {
|
||||
if (begun) throw new InvalidOperationException("The VertexArrayHandle has already been started.");
|
||||
GL.BindVertexArray(handle);
|
||||
begun = true;
|
||||
}
|
||||
public void End() {
|
||||
if (!begun) throw new InvalidOperationException("The VertexArrayHandle has never been started.");
|
||||
GL.BindVertexArray(0);
|
||||
begun = false;
|
||||
}
|
||||
public void Dispose() {
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
protected virtual void Dispose(bool disposing) {
|
||||
if (disposed) return;
|
||||
if (disposing) {
|
||||
|
||||
}
|
||||
GL.BindVertexArray(0);
|
||||
GL.DeleteVertexArray(handle);
|
||||
disposed = true;
|
||||
}
|
||||
~VertexArrayHandle() {
|
||||
Dispose(false);
|
||||
}
|
||||
}
|
||||
}
|
58
RecrownedGTK/Graphics/VertexAttributesHandle.cs
Normal file
58
RecrownedGTK/Graphics/VertexAttributesHandle.cs
Normal file
@ -0,0 +1,58 @@
|
||||
using System;
|
||||
using OpenTK.Graphics.OpenGL;
|
||||
using RecrownedGTK.Graphics.Render.Shader;
|
||||
namespace RecrownedGTK.Graphics {
|
||||
public class VertexAttributesHandle : IDisposable {
|
||||
private bool disposed;
|
||||
private int handle;
|
||||
private bool begun;
|
||||
public VertexAttributesHandle() {
|
||||
handle = GL.GenVertexArray();
|
||||
}
|
||||
|
||||
public void Begin() {
|
||||
if (begun) throw new InvalidOperationException("The VertexArrayHandle has already been started.");
|
||||
GL.BindVertexArray(handle);
|
||||
begun = true;
|
||||
}
|
||||
public void End() {
|
||||
if (!begun) throw new InvalidOperationException("The VertexArrayHandle has never been started.");
|
||||
GL.BindVertexArray(0);
|
||||
begun = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a basic vertex attributes object handle that takes in vertices, texture coordinates, and a color.
|
||||
/// </summary>
|
||||
/// <param name="shader">The shader program used. Default is the one created from <see cref="RecrownedGTK.Graphics.Render.Shader.Shader.CreateBasicShader"/>.</param>
|
||||
/// <param name="positionAttribName">The name of the attribute for the vertex's position in the shader. Default is "aPosition".</param>
|
||||
/// <param name="textureAttribName">The name of the attribute for the texture's coordinate. Default is "aTexture".</param>
|
||||
/// <param name="colorAttribName">The name of the attribute for color mixture. Default is "aColor".</param>
|
||||
/// <returns>The built <see cref="RecrownedGTK.Graphics.VertexAttributesHandle"/>.</returns>
|
||||
public static VertexAttributesHandle CreateBasicVA(Shader shader = null, string positionAttribName = "aPosition", string textureAttribName = "aTexture", string colorAttribName = "aColor") {
|
||||
if (shader == null) shader = Shader.CreateBasicShader();
|
||||
VertexAttributesHandle vertexAttribs = new VertexAttributesHandle();
|
||||
GL.VertexAttribPointer(shader.GetAttribLocation(positionAttribName), 3, VertexAttribPointerType.Float, false, 9 * sizeof(float), 0);
|
||||
GL.VertexAttribPointer(shader.GetAttribLocation(textureAttribName), 2, VertexAttribPointerType.Float, false, 9 * sizeof(float), 3 * sizeof(float));
|
||||
GL.VertexAttribPointer(shader.GetAttribLocation(colorAttribName), 4, VertexAttribPointerType.Float, false, 9 * sizeof(float), 5 * sizeof(float));
|
||||
vertexAttribs.End();
|
||||
return vertexAttribs;
|
||||
}
|
||||
public void Dispose() {
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
protected virtual void Dispose(bool disposing) {
|
||||
if (disposed) return;
|
||||
if (disposing) {
|
||||
|
||||
}
|
||||
GL.BindVertexArray(0);
|
||||
GL.DeleteVertexArray(handle);
|
||||
disposed = true;
|
||||
}
|
||||
~VertexAttributesHandle() {
|
||||
Dispose(false);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user