void DiGLIndexBuffer::Unlock() { SetDataRange(mLockingScratch, mLockingOffset, mLockingSize, mLockingOffset == 0 && mLockingSize == mBufferSize); DiGLDriver::BufferMgr->DeallocateScratch(mLockingScratch); mLockingScratch = nullptr; mLockingOffset = 0; mLockingSize = 0; }
void IndexBuffer::Unlock() { switch (lockState_) { case LOCK_SHADOW: SetDataRange(shadowData_.Get() + lockStart_ * indexSize_, lockStart_, lockCount_); lockState_ = LOCK_NONE; break; case LOCK_SCRATCH: SetDataRange(lockScratchData_, lockStart_, lockCount_); if (graphics_) graphics_->FreeScratchBuffer(lockScratchData_); lockScratchData_ = 0; lockState_ = LOCK_NONE; break; default: break; } }
void VertexBuffer::Unlock() { switch (lockState_) { case LOCK_HARDWARE: UnmapBuffer(); break; case LOCK_SHADOW: SetDataRange(shadowData_.Get() + lockStart_ * vertexSize_, lockStart_, lockCount_); lockState_ = LOCK_NONE; break; case LOCK_SCRATCH: SetDataRange(lockScratchData_, lockStart_, lockCount_); if (graphics_) graphics_->FreeScratchBuffer(lockScratchData_); lockScratchData_ = 0; lockState_ = LOCK_NONE; break; } }