CmHardwareBufferManager.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include "CmHardwareBufferManager.h"
  2. #include "CmVertexData.h"
  3. #include "CmIndexData.h"
  4. #include "CmGpuBuffer.h"
  5. #include "CmVertexDeclaration.h"
  6. #include "CmGpuParamBlockBuffer.h"
  7. namespace BansheeEngine
  8. {
  9. HardwareBufferManager::HardwareBufferManager()
  10. {
  11. }
  12. HardwareBufferManager::~HardwareBufferManager()
  13. {
  14. }
  15. VertexDeclarationPtr HardwareBufferManager::createVertexDeclaration(const VertexDeclaration::VertexElementList& elements)
  16. {
  17. VertexDeclarationPtr decl = createVertexDeclarationImpl(elements);
  18. decl->_setThisPtr(decl);
  19. decl->initialize();
  20. return decl;
  21. }
  22. VertexBufferPtr HardwareBufferManager::createVertexBuffer(UINT32 vertexSize, UINT32 numVerts, GpuBufferUsage usage, bool streamOut)
  23. {
  24. assert (numVerts > 0);
  25. VertexBufferPtr vbuf = createVertexBufferImpl(vertexSize, numVerts, usage, streamOut);
  26. vbuf->_setThisPtr(vbuf);
  27. vbuf->initialize();
  28. return vbuf;
  29. }
  30. IndexBufferPtr HardwareBufferManager::createIndexBuffer(IndexBuffer::IndexType itype, UINT32 numIndexes, GpuBufferUsage usage)
  31. {
  32. assert (numIndexes > 0);
  33. IndexBufferPtr ibuf = createIndexBufferImpl(itype, numIndexes, usage);
  34. ibuf->_setThisPtr(ibuf);
  35. ibuf->initialize();
  36. return ibuf;
  37. }
  38. GpuParamBlockBufferPtr HardwareBufferManager::createGpuParamBlockBuffer(UINT32 size, GpuParamBlockUsage usage)
  39. {
  40. GpuParamBlockBufferPtr paramBlockPtr = createGpuParamBlockBufferImpl();
  41. paramBlockPtr->_setThisPtr(paramBlockPtr);
  42. paramBlockPtr->initialize(size, usage);
  43. return paramBlockPtr;
  44. }
  45. GpuBufferPtr HardwareBufferManager::createGpuBuffer(UINT32 elementCount, UINT32 elementSize,
  46. GpuBufferType type, GpuBufferUsage usage, bool randomGpuWrite, bool useCounter)
  47. {
  48. GpuBufferPtr gbuf = createGpuBufferImpl(elementCount, elementSize, type, usage, randomGpuWrite, useCounter);
  49. gbuf->_setThisPtr(gbuf);
  50. gbuf->initialize();
  51. return gbuf;
  52. }
  53. VertexDeclarationPtr HardwareBufferManager::createVertexDeclarationImpl(const VertexDeclaration::VertexElementList& elements)
  54. {
  55. return cm_core_ptr<VertexDeclaration, PoolAlloc>(new (cm_alloc<VertexDeclaration, PoolAlloc>()) VertexDeclaration(elements));
  56. }
  57. }