BsVertexData.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "RenderAPI/BsVertexData.h"
  4. #include "Managers/BsHardwareBufferManager.h"
  5. #include "RenderAPI/BsVertexBuffer.h"
  6. #include "Math/BsVector3.h"
  7. #include "Error/BsException.h"
  8. #include "RenderAPI/BsRenderAPI.h"
  9. namespace bs { namespace ct
  10. {
  11. VertexData::VertexData()
  12. {
  13. vertexCount = 0;
  14. }
  15. VertexData::~VertexData()
  16. {
  17. }
  18. void VertexData::setBuffer(UINT32 index, SPtr<VertexBuffer> buffer)
  19. {
  20. mVertexBuffers[index] = buffer;
  21. recalculateMaxIndex();
  22. }
  23. SPtr<VertexBuffer> VertexData::getBuffer(UINT32 index) const
  24. {
  25. auto iterFind = mVertexBuffers.find(index);
  26. if(iterFind != mVertexBuffers.end())
  27. {
  28. return iterFind->second;
  29. }
  30. return nullptr;
  31. }
  32. bool VertexData::isBufferBound(UINT32 index) const
  33. {
  34. auto iterFind = mVertexBuffers.find(index);
  35. if(iterFind != mVertexBuffers.end())
  36. {
  37. if(iterFind->second != nullptr)
  38. return true;
  39. }
  40. return false;
  41. }
  42. void VertexData::recalculateMaxIndex()
  43. {
  44. mMaxBufferIdx = 0;
  45. for (auto& bufferData : mVertexBuffers)
  46. mMaxBufferIdx = std::max(bufferData.first, mMaxBufferIdx);
  47. }
  48. }}