ConstantBuffer.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2021 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #include <TestFramework.h>
  5. #include <Renderer/ConstantBuffer.h>
  6. #include <Renderer/Renderer.h>
  7. #include <Renderer/FatalErrorIfFailed.h>
  8. ConstantBuffer::ConstantBuffer(Renderer *inRenderer, uint64 inBufferSize) :
  9. mRenderer(inRenderer)
  10. {
  11. mBuffer = mRenderer->CreateD3DResourceOnUploadHeap(inBufferSize);
  12. mBufferSize = inBufferSize;
  13. }
  14. ConstantBuffer::~ConstantBuffer()
  15. {
  16. if (mBuffer != nullptr)
  17. mRenderer->RecycleD3DResourceOnUploadHeap(mBuffer.Get(), mBufferSize);
  18. }
  19. void *ConstantBuffer::MapInternal()
  20. {
  21. void *mapped_resource;
  22. D3D12_RANGE range = { 0, 0 }; // We're not going to read
  23. FatalErrorIfFailed(mBuffer->Map(0, &range, &mapped_resource));
  24. return mapped_resource;
  25. }
  26. void ConstantBuffer::Unmap()
  27. {
  28. mBuffer->Unmap(0, nullptr);
  29. }
  30. void ConstantBuffer::Bind(int inSlot)
  31. {
  32. mRenderer->GetCommandList()->SetGraphicsRootConstantBufferView(inSlot, mBuffer->GetGPUVirtualAddress());
  33. }