RenderPrimitiveDX12.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
  2. // SPDX-FileCopyrightText: 2024 Jorrit Rouwe
  3. // SPDX-License-Identifier: MIT
  4. #pragma once
  5. #include <Renderer/RenderPrimitive.h>
  6. #include <Renderer/DX12/RendererDX12.h>
  7. /// DirectX 12 implementation of a render primitive
  8. class RenderPrimitiveDX12 : public RenderPrimitive
  9. {
  10. public:
  11. JPH_OVERRIDE_NEW_DELETE
  12. /// Constructor
  13. RenderPrimitiveDX12(RendererDX12 *inRenderer, PipelineState::ETopology inType) : mRenderer(inRenderer), mType(inType) { }
  14. virtual ~RenderPrimitiveDX12() override { Clear(); }
  15. /// Vertex buffer management functions
  16. virtual void CreateVertexBuffer(int inNumVtx, int inVtxSize, const void *inData = nullptr) override;
  17. virtual void ReleaseVertexBuffer() override;
  18. virtual void * LockVertexBuffer() override;
  19. virtual void UnlockVertexBuffer() override;
  20. /// Index buffer management functions
  21. virtual void CreateIndexBuffer(int inNumIdx, const uint32 *inData = nullptr) override;
  22. virtual void ReleaseIndexBuffer() override;
  23. virtual uint32 * LockIndexBuffer() override;
  24. virtual void UnlockIndexBuffer() override;
  25. /// Draw the primitive
  26. virtual void Draw() const override;
  27. private:
  28. friend class RenderInstancesDX12;
  29. RendererDX12 * mRenderer;
  30. PipelineState::ETopology mType;
  31. ComPtr<ID3D12Resource> mVtxBuffer;
  32. bool mVtxBufferInUploadHeap = false;
  33. ComPtr<ID3D12Resource> mIdxBuffer;
  34. bool mIdxBufferInUploadHeap = false;
  35. };