BsIndexBuffer.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "BsIndexBuffer.h"
  2. #include "BsHardwareBufferManager.h"
  3. #include "BsRenderSystem.h"
  4. namespace BansheeEngine
  5. {
  6. IndexBufferProperties::IndexBufferProperties(IndexType idxType, UINT32 numIndexes)
  7. :mIndexType(idxType), mNumIndexes(numIndexes)
  8. {
  9. switch (mIndexType)
  10. {
  11. case IT_16BIT:
  12. mIndexSize = sizeof(unsigned short);
  13. break;
  14. case IT_32BIT:
  15. mIndexSize = sizeof(unsigned int);
  16. break;
  17. }
  18. }
  19. IndexBufferCore::IndexBufferCore(IndexType idxType, UINT32 numIndexes, GpuBufferUsage usage)
  20. :HardwareBuffer(usage, false), mProperties(idxType, numIndexes)
  21. {
  22. mSizeInBytes = mProperties.mIndexSize * mProperties.mNumIndexes;
  23. }
  24. IndexBuffer::IndexBuffer(IndexType idxType, UINT32 numIndexes, GpuBufferUsage usage)
  25. : mUsage(usage), mProperties(idxType, numIndexes)
  26. {
  27. }
  28. SPtr<IndexBufferCore> IndexBuffer::getCore() const
  29. {
  30. return std::static_pointer_cast<IndexBufferCore>(mCoreSpecific);
  31. }
  32. SPtr<CoreObjectCore> IndexBuffer::createCore() const
  33. {
  34. return HardwareBufferCoreManager::instance().createIndexBufferInternal(mProperties.mIndexType, mProperties.mNumIndexes, mUsage);
  35. }
  36. IndexBufferPtr IndexBuffer::create(IndexType itype, UINT32 numIndexes, GpuBufferUsage usage)
  37. {
  38. return HardwareBufferManager::instance().createIndexBuffer(itype, numIndexes, usage);
  39. }
  40. }