From 8c1d68da57c1706cf999cb51e476f84a6a77704c Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Mon, 16 Mar 2026 00:09:42 +0800 Subject: [PATCH] Make D3D12RootSignature implement IRootSignature interface --- engine/include/XCEngine/RHI/D3D12/D3D12RootSignature.h | 7 ++++++- engine/src/RHI/D3D12/D3D12RootSignature.cpp | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) 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; }