Use GL_ARB_vertex_buffer_object calls instead of gl 1.5 core calls.

This commit is contained in:
Paul Chote
2011-07-23 00:06:41 +12:00
parent f88ea4c25a
commit ac9a5efd8e

View File

@@ -22,20 +22,20 @@ namespace OpenRA.Renderer.SdlCommon
public VertexBuffer(int size) public VertexBuffer(int size)
{ {
Gl.glGenBuffers(1, out buffer); Gl.glGenBuffersARB(1, out buffer);
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
Bind(); Bind();
Gl.glBufferData(Gl.GL_ARRAY_BUFFER, Gl.glBufferDataARB(Gl.GL_ARRAY_BUFFER_ARB,
new IntPtr(Marshal.SizeOf(typeof(T)) * size), new IntPtr(Marshal.SizeOf(typeof(T)) * size),
new T[ size ], new T[ size ],
Gl.GL_DYNAMIC_DRAW); Gl.GL_DYNAMIC_DRAW_ARB);
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
} }
public void SetData(T[] data, int length) public void SetData(T[] data, int length)
{ {
Bind(); Bind();
Gl.glBufferSubData(Gl.GL_ARRAY_BUFFER, Gl.glBufferSubDataARB(Gl.GL_ARRAY_BUFFER_ARB,
IntPtr.Zero, IntPtr.Zero,
new IntPtr(Marshal.SizeOf(typeof(T)) * length), new IntPtr(Marshal.SizeOf(typeof(T)) * length),
data); data);
@@ -44,7 +44,7 @@ namespace OpenRA.Renderer.SdlCommon
public void Bind() public void Bind()
{ {
Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, buffer); Gl.glBindBufferARB(Gl.GL_ARRAY_BUFFER_ARB, buffer);
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
Gl.glVertexPointer(3, Gl.GL_FLOAT, Marshal.SizeOf(typeof(T)), IntPtr.Zero); Gl.glVertexPointer(3, Gl.GL_FLOAT, Marshal.SizeOf(typeof(T)), IntPtr.Zero);
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
@@ -52,7 +52,7 @@ namespace OpenRA.Renderer.SdlCommon
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
} }
void FinalizeInner() { Gl.glDeleteBuffers( 1, ref buffer ); } void FinalizeInner() { Gl.glDeleteBuffersARB( 1, ref buffer ); }
~VertexBuffer() { Game.RunAfterTick( FinalizeInner ); } ~VertexBuffer() { Game.RunAfterTick( FinalizeInner ); }
} }
} }