protected override void UnlockImpl()
{
if ( _lockedToScratch )
{
if ( _scratchUploadOnUnlock )
{
// have to write the data back to vertex buffer
WriteData( _scratchOffset, _scratchSize, _scratchPtr, _scratchOffset == 0 && _scratchSize == sizeInBytes );
}
// deallocate from scratch buffer
( (GLESHardwareBufferManager)HardwareBufferManager.Instance ).DeallocateScratch( _scratchPtr );
_lockedToScratch = false;
}
else
{
OpenGL.BindBuffer( All.ArrayBuffer, _bufferId );
if ( !OpenGLOES.UnmapBuffer( All.ArrayBuffer ) )
{
throw new AxiomException( "Buffer data corrupted, please reload" );
}
}
isLocked = false;
}