BsVertexBuffer.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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 BansheeEngine
  6. {
  7. VertexBufferProperties::VertexBufferProperties(UINT32 numVertices, UINT32 vertexSize)
  8. :mNumVertices(numVertices), mVertexSize(vertexSize)
  9. {
  10. }
  11. VertexBufferCore::VertexBufferCore(const VERTEX_BUFFER_DESC& desc, GpuDeviceFlags deviceMask)
  12. :HardwareBuffer(desc.usage, false), mProperties(desc.numVerts, desc.vertexSize)
  13. {
  14. mSizeInBytes = mProperties.mVertexSize * mProperties.mNumVertices;
  15. }
  16. SPtr<VertexBufferCore> VertexBufferCore::create(const VERTEX_BUFFER_DESC& desc, GpuDeviceFlags deviceMask)
  17. {
  18. return HardwareBufferCoreManager::instance().createVertexBuffer(desc, deviceMask);
  19. }
  20. VertexBuffer::VertexBuffer(const VERTEX_BUFFER_DESC& desc)
  21. : mProperties(desc.numVerts, desc.vertexSize), mUsage(desc.usage), mStreamOut(desc.streamOut)
  22. {
  23. }
  24. SPtr<CoreObjectCore> VertexBuffer::createCore() const
  25. {
  26. VERTEX_BUFFER_DESC desc;
  27. desc.vertexSize = mProperties.mVertexSize;
  28. desc.numVerts = mProperties.mNumVertices;
  29. desc.usage = mUsage;
  30. desc.streamOut = mStreamOut;
  31. return HardwareBufferCoreManager::instance().createVertexBufferInternal(desc);
  32. }
  33. SPtr<VertexBufferCore> VertexBuffer::getCore() const
  34. {
  35. return std::static_pointer_cast<VertexBufferCore>(mCoreSpecific);
  36. }
  37. SPtr<VertexBuffer> VertexBuffer::create(const VERTEX_BUFFER_DESC& desc)
  38. {
  39. return HardwareBufferManager::instance().createVertexBuffer(desc);
  40. }
  41. }