BsVertexBuffer.cpp 1.6 KB

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