BsVertexBuffer.cpp 1.6 KB

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