BsHardwareBufferManager.cpp 2.1 KB

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