BsHardwareBufferManager.cpp 2.4 KB

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