Files
CosmicEngine/lib/All/JoltPhysics/TestFramework/Renderer/DX12/RenderPrimitiveDX12.h

48 lines
1.4 KiB
C++

// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
// SPDX-FileCopyrightText: 2024 Jorrit Rouwe
// SPDX-License-Identifier: MIT
#pragma once
#include <Renderer/RenderPrimitive.h>
#include <Renderer/DX12/RendererDX12.h>
/// DirectX 12 implementation of a render primitive
class RenderPrimitiveDX12 : public RenderPrimitive
{
public:
JPH_OVERRIDE_NEW_DELETE
/// Constructor
RenderPrimitiveDX12(RendererDX12 *inRenderer, PipelineState::ETopology inType) : mRenderer(inRenderer), mType(inType) { }
virtual ~RenderPrimitiveDX12() override { Clear(); }
/// Vertex buffer management functions
virtual void CreateVertexBuffer(int inNumVtx, int inVtxSize, const void *inData = nullptr) override;
virtual void ReleaseVertexBuffer() override;
virtual void * LockVertexBuffer() override;
virtual void UnlockVertexBuffer() override;
/// Index buffer management functions
virtual void CreateIndexBuffer(int inNumIdx, const uint32 *inData = nullptr) override;
virtual void ReleaseIndexBuffer() override;
virtual uint32 * LockIndexBuffer() override;
virtual void UnlockIndexBuffer() override;
/// Draw the primitive
virtual void Draw() const override;
private:
friend class RenderInstancesDX12;
RendererDX12 * mRenderer;
PipelineState::ETopology mType;
ComPtr<ID3D12Resource> mVtxBuffer;
bool mVtxBufferInUploadHeap = false;
ComPtr<ID3D12Resource> mIdxBuffer;
bool mIdxBufferInUploadHeap = false;
};