BsIndexBuffer.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 numIndices)
  9. :mIndexType(idxType), mNumIndices(numIndices)
  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 numIndices, GpuBufferUsage usage)
  22. :HardwareBuffer(usage, false), mProperties(idxType, numIndices)
  23. {
  24. mSizeInBytes = mProperties.mIndexSize * mProperties.mNumIndices;
  25. }
  26. SPtr<IndexBufferCore> IndexBufferCore::create(IndexType itype, UINT32 numIndexes, GpuBufferUsage usage)
  27. {
  28. return HardwareBufferCoreManager::instance().createIndexBuffer(itype, numIndexes, usage);
  29. }
  30. IndexBuffer::IndexBuffer(IndexType idxType, UINT32 numIndexes, GpuBufferUsage usage)
  31. :mProperties(idxType, numIndexes), mUsage(usage)
  32. {
  33. }
  34. SPtr<IndexBufferCore> IndexBuffer::getCore() const
  35. {
  36. return std::static_pointer_cast<IndexBufferCore>(mCoreSpecific);
  37. }
  38. SPtr<CoreObjectCore> IndexBuffer::createCore() const
  39. {
  40. return HardwareBufferCoreManager::instance().createIndexBufferInternal(mProperties.mIndexType,
  41. mProperties.mNumIndices, mUsage);
  42. }
  43. SPtr<IndexBuffer> IndexBuffer::create(IndexType itype, UINT32 numIndices, GpuBufferUsage usage)
  44. {
  45. return HardwareBufferManager::instance().createIndexBuffer(itype, numIndices, usage);
  46. }
  47. }