diff --git a/engine/include/XCEngine/RHI/D3D12/D3D12RootSignature.h b/engine/include/XCEngine/RHI/D3D12/D3D12RootSignature.h index a6b4c595..8fb0968f 100644 --- a/engine/include/XCEngine/RHI/D3D12/D3D12RootSignature.h +++ b/engine/include/XCEngine/RHI/D3D12/D3D12RootSignature.h @@ -4,6 +4,7 @@ #include #include "../Enums.h" +#include "../DescriptorHeap.h" #include "D3D12Enum.h" using Microsoft::WRL::ComPtr; @@ -11,7 +12,7 @@ using Microsoft::WRL::ComPtr; namespace XCEngine { namespace RHI { -class D3D12RootSignature { +class D3D12RootSignature : public IRootSignature { public: D3D12RootSignature(); ~D3D12RootSignature(); @@ -21,8 +22,12 @@ public: ID3D12RootSignature* GetRootSignature() const { return m_rootSignature.Get(); } + void* GetNativeHandle() const override { return m_rootSignature.Get(); } + uint32_t GetParameterCount() const override { return m_parameterCount; } + private: ComPtr m_rootSignature; + uint32_t m_parameterCount = 0; }; } // namespace RHI diff --git a/engine/src/RHI/D3D12/D3D12RootSignature.cpp b/engine/src/RHI/D3D12/D3D12RootSignature.cpp index 92d304b6..d4d329fb 100644 --- a/engine/src/RHI/D3D12/D3D12RootSignature.cpp +++ b/engine/src/RHI/D3D12/D3D12RootSignature.cpp @@ -30,6 +30,8 @@ bool D3D12RootSignature::Initialize(ID3D12Device* device, const D3D12_ROOT_SIGNA return false; } + m_parameterCount = desc.NumParameters; + return true; }