2
0

BsIndexBuffer.cpp 1.6 KB

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