public override void WriteData( int offset, int length, IntPtr src, bool discardWholeBuffer )
{
Gl.glBindBufferARB( Gl.GL_ARRAY_BUFFER_ARB, bufferID );
if ( useShadowBuffer )
{
// lock the buffer for reading
IntPtr dest = shadowBuffer.Lock( offset, length,
discardWholeBuffer ? BufferLocking.Discard : BufferLocking.Normal );
// copy that data in there
Memory.Copy( src, dest, length );
// unlock the buffer
shadowBuffer.Unlock();
}
if ( discardWholeBuffer )
{
Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB,
new IntPtr( sizeInBytes ),
IntPtr.Zero,
GLHelper.ConvertEnum( usage ) ); // TAO 2.0
//Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB,
// sizeInBytes,
// IntPtr.Zero,
// GLHelper.ConvertEnum( usage ) );
}
Gl.glBufferSubDataARB(
Gl.GL_ARRAY_BUFFER_ARB,
new IntPtr( offset ),
new IntPtr( length ),
src ); // TAO 2.0
//Gl.glBufferSubDataARB(
// Gl.GL_ARRAY_BUFFER_ARB,
// offset,
// length,
// src );
}