CmD3D11IndexBuffer.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "CmD3D11IndexBuffer.h"
  2. namespace CamelotEngine
  3. {
  4. D3D11IndexBuffer::D3D11IndexBuffer(D3D11Device& device, HardwareBufferManager* mgr, IndexType idxType, UINT32 numIndexes,
  5. GpuBufferUsage usage, bool useSystemMem)
  6. :IndexBuffer(mgr, idxType, numIndexes, usage, useSystemMem), mDevice(device), mBuffer(nullptr)
  7. {
  8. }
  9. D3D11IndexBuffer::~D3D11IndexBuffer()
  10. {
  11. }
  12. void D3D11IndexBuffer::initialize_internal()
  13. {
  14. mBuffer = CM_NEW(D3D11HardwareBuffer, PoolAlloc) D3D11HardwareBuffer(D3D11HardwareBuffer::BT_INDEX, mUsage, 1, mSizeInBytes, mDevice, mSystemMemory);
  15. IndexBuffer::initialize_internal();
  16. }
  17. void D3D11IndexBuffer::destroy_internal()
  18. {
  19. if(mBuffer != nullptr)
  20. CM_DELETE(mBuffer, D3D11HardwareBuffer, PoolAlloc) ;
  21. IndexBuffer::destroy_internal();
  22. }
  23. void* D3D11IndexBuffer::lockImpl(UINT32 offset, UINT32 length, GpuLockOptions options)
  24. {
  25. return mBuffer->lock(offset, length, options);
  26. }
  27. void D3D11IndexBuffer::unlockImpl()
  28. {
  29. mBuffer->unlock();
  30. }
  31. void D3D11IndexBuffer::readData(UINT32 offset, UINT32 length, void* pDest)
  32. {
  33. mBuffer->readData(offset, length, pDest);
  34. }
  35. void D3D11IndexBuffer::writeData(UINT32 offset, UINT32 length, const void* pSource, bool discardWholeBuffer)
  36. {
  37. mBuffer->writeData(offset, length, pSource, discardWholeBuffer);
  38. }
  39. void D3D11IndexBuffer::copyData(HardwareBuffer& srcBuffer, UINT32 srcOffset,
  40. UINT32 dstOffset, UINT32 length, bool discardWholeBuffer)
  41. {
  42. mBuffer->copyData(srcBuffer, srcOffset, dstOffset, length, discardWholeBuffer);
  43. }
  44. }