BsVertexBuffer.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "RenderAPI/BsVertexBuffer.h"
  4. #include "Managers/BsHardwareBufferManager.h"
  5. namespace bs
  6. {
  7. VertexBufferProperties::VertexBufferProperties(UINT32 numVertices, UINT32 vertexSize)
  8. :mNumVertices(numVertices), mVertexSize(vertexSize)
  9. { }
  10. VertexBuffer::VertexBuffer(const VERTEX_BUFFER_DESC& desc)
  11. : mProperties(desc.numVerts, desc.vertexSize), mUsage(desc.usage), mStreamOut(desc.streamOut)
  12. {
  13. }
  14. SPtr<ct::CoreObject> VertexBuffer::createCore() const
  15. {
  16. VERTEX_BUFFER_DESC desc;
  17. desc.vertexSize = mProperties.mVertexSize;
  18. desc.numVerts = mProperties.mNumVertices;
  19. desc.usage = mUsage;
  20. desc.streamOut = mStreamOut;
  21. return ct::HardwareBufferManager::instance().createVertexBufferInternal(desc);
  22. }
  23. SPtr<ct::VertexBuffer> VertexBuffer::getCore() const
  24. {
  25. return std::static_pointer_cast<ct::VertexBuffer>(mCoreSpecific);
  26. }
  27. SPtr<VertexBuffer> VertexBuffer::create(const VERTEX_BUFFER_DESC& desc)
  28. {
  29. return HardwareBufferManager::instance().createVertexBuffer(desc);
  30. }
  31. namespace ct
  32. {
  33. VertexBuffer::VertexBuffer(const VERTEX_BUFFER_DESC& desc, GpuDeviceFlags deviceMask)
  34. :HardwareBuffer(desc.vertexSize * desc.numVerts), mProperties(desc.numVerts, desc.vertexSize)
  35. { }
  36. SPtr<VertexBuffer> VertexBuffer::create(const VERTEX_BUFFER_DESC& desc, GpuDeviceFlags deviceMask)
  37. {
  38. return HardwareBufferManager::instance().createVertexBuffer(desc, deviceMask);
  39. }
  40. }
  41. }