BsIndexBuffer.cpp 1.1 KB

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