factor out Marshal.SizeOf calls

This commit is contained in:
Chris Forbes
2011-10-29 18:32:43 +13:00
parent 77ebd5d6de
commit 5bb535b50c

View File

@@ -19,6 +19,7 @@ namespace OpenRA.Renderer.SdlCommon
where T : struct where T : struct
{ {
int buffer; int buffer;
static readonly int vertexSize = Marshal.SizeOf(typeof(T));
public VertexBuffer(int size) public VertexBuffer(int size)
{ {
@@ -26,7 +27,7 @@ namespace OpenRA.Renderer.SdlCommon
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
Bind(); Bind();
Gl.glBufferDataARB(Gl.GL_ARRAY_BUFFER_ARB, Gl.glBufferDataARB(Gl.GL_ARRAY_BUFFER_ARB,
new IntPtr(Marshal.SizeOf(typeof(T)) * size), new IntPtr(vertexSize * size),
new T[ size ], new T[ size ],
Gl.GL_DYNAMIC_DRAW_ARB); Gl.GL_DYNAMIC_DRAW_ARB);
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
@@ -37,7 +38,7 @@ namespace OpenRA.Renderer.SdlCommon
Bind(); Bind();
Gl.glBufferSubDataARB(Gl.GL_ARRAY_BUFFER_ARB, Gl.glBufferSubDataARB(Gl.GL_ARRAY_BUFFER_ARB,
IntPtr.Zero, IntPtr.Zero,
new IntPtr(Marshal.SizeOf(typeof(T)) * length), new IntPtr(vertexSize * length),
data); data);
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
} }
@@ -46,9 +47,9 @@ namespace OpenRA.Renderer.SdlCommon
{ {
Gl.glBindBufferARB(Gl.GL_ARRAY_BUFFER_ARB, 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, vertexSize, IntPtr.Zero);
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
Gl.glTexCoordPointer(4, Gl.GL_FLOAT, Marshal.SizeOf(typeof(T)), new IntPtr(12)); Gl.glTexCoordPointer(4, Gl.GL_FLOAT, vertexSize, new IntPtr(12));
ErrorHandler.CheckGlError(); ErrorHandler.CheckGlError();
} }