BsVertexData.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "BsVertexData.h"
  2. #include "BsHardwareBufferManager.h"
  3. #include "BsVertexBuffer.h"
  4. #include "BsVector3.h"
  5. #include "BsException.h"
  6. #include "BsRenderSystem.h"
  7. namespace BansheeEngine
  8. {
  9. VertexData::VertexData()
  10. {
  11. vertexCount = 0;
  12. }
  13. VertexData::~VertexData()
  14. {
  15. }
  16. void VertexData::setBuffer(UINT32 index, SPtr<VertexBufferCore> buffer)
  17. {
  18. mVertexBuffers[index] = buffer;
  19. recalculateMaxIndex();
  20. }
  21. SPtr<VertexBufferCore> VertexData::getBuffer(UINT32 index) const
  22. {
  23. auto iterFind = mVertexBuffers.find(index);
  24. if(iterFind != mVertexBuffers.end())
  25. {
  26. return iterFind->second;
  27. }
  28. return nullptr;
  29. }
  30. bool VertexData::isBufferBound(UINT32 index) const
  31. {
  32. auto iterFind = mVertexBuffers.find(index);
  33. if(iterFind != mVertexBuffers.end())
  34. {
  35. if(iterFind->second != nullptr)
  36. return true;
  37. }
  38. return false;
  39. }
  40. void VertexData::recalculateMaxIndex()
  41. {
  42. mMaxBufferIdx = 0;
  43. for (auto& bufferData : mVertexBuffers)
  44. mMaxBufferIdx = std::max(bufferData.first, mMaxBufferIdx);
  45. }
  46. }