protected override void UpdateFromShadow()
{
if ( useShadowBuffer && shadowUpdated && !suppressHardwareUpdate )
{
IntPtr srcData = shadowBuffer.Lock( lockStart, lockSize, BufferLocking.ReadOnly );
OpenGL.BindBuffer( All.ArrayBuffer, _bufferId );
GLESConfig.GlCheckError( this );
// Update whole buffer if possible, otherwise normal
if ( lockStart == 0 && lockSize == sizeInBytes )
{
OpenGL.BufferData( All.ArrayBuffer, new IntPtr( sizeInBytes ), srcData, GLESHardwareBufferManager.GetGLUsage( usage ) );
GLESConfig.GlCheckError( this );
}
else
{
OpenGL.BufferSubData( All.ArrayBuffer, new IntPtr( lockStart ), new IntPtr( lockSize ), srcData );
GLESConfig.GlCheckError( this );
}
shadowBuffer.Unlock();
shadowUpdated = false;
}
}