Use GL_ARB_vertex_buffer_object calls instead of gl 1.5 core calls.
This commit is contained in:
@@ -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 ); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user