public IGLBuffer GenIndexBuffer( bool dynamic, int indexCount, IndexElementSize indexElementSize ) { OpenGLBuffer result = null; #if !DISABLE_THREADING ForceToMainThread(() => { #endif uint handle; glGenBuffers(1, out handle); result = new OpenGLBuffer( handle, (IntPtr) (indexCount * XNAToGL.IndexSize[(int) indexElementSize]), dynamic ? GLenum.GL_STREAM_DRAW : GLenum.GL_STATIC_DRAW ); BindIndexBuffer(result); glBufferData( GLenum.GL_ELEMENT_ARRAY_BUFFER, result.BufferSize, IntPtr.Zero, result.Dynamic ); #if !DISABLE_THREADING }); #endif return result; }
public IGLBuffer GenVertexBuffer( bool dynamic, int vertexCount, int vertexStride ) { OpenGLBuffer result = null; #if !DISABLE_THREADING ForceToMainThread(() => { #endif uint handle; glGenBuffers(1, out handle); result = new OpenGLBuffer( handle, (IntPtr) (vertexStride * vertexCount), dynamic ? GLenum.GL_STREAM_DRAW : GLenum.GL_STATIC_DRAW ); BindVertexBuffer(result); glBufferData( GLenum.GL_ARRAY_BUFFER, result.BufferSize, IntPtr.Zero, result.Dynamic ); #if !DISABLE_THREADING }); #endif return result; }