From f615a86aab694a65d1be2ac46d24a444b3001c1c Mon Sep 17 00:00:00 2001 From: ssdfasd <2156608475@qq.com> Date: Tue, 17 Mar 2026 01:26:40 +0800 Subject: [PATCH] Add CreateDesc for D3D12ShaderResourceView --- .../XCEngine/RHI/D3D12/D3D12ShaderResourceView.h | 5 +++++ engine/src/RHI/D3D12/D3D12ShaderResourceView.cpp | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/engine/include/XCEngine/RHI/D3D12/D3D12ShaderResourceView.h b/engine/include/XCEngine/RHI/D3D12/D3D12ShaderResourceView.h index a3262b8f..beeeb5ed 100644 --- a/engine/include/XCEngine/RHI/D3D12/D3D12ShaderResourceView.h +++ b/engine/include/XCEngine/RHI/D3D12/D3D12ShaderResourceView.h @@ -3,6 +3,9 @@ #include #include +#include "../Enums.h" +#include "D3D12Enum.h" + using Microsoft::WRL::ComPtr; namespace XCEngine { @@ -19,6 +22,8 @@ public: D3D12_CPU_DESCRIPTOR_HANDLE GetCPUDescriptorHandle() const { return m_handle; } + static D3D12_SHADER_RESOURCE_VIEW_DESC CreateDesc(Format format, D3D12_SRV_DIMENSION dimension = D3D12_SRV_DIMENSION_TEXTURE2D, uint32_t mipLevels = 1); + private: D3D12_CPU_DESCRIPTOR_HANDLE m_handle; ID3D12Resource* m_resource; diff --git a/engine/src/RHI/D3D12/D3D12ShaderResourceView.cpp b/engine/src/RHI/D3D12/D3D12ShaderResourceView.cpp index 8ca3a725..9ab1b849 100644 --- a/engine/src/RHI/D3D12/D3D12ShaderResourceView.cpp +++ b/engine/src/RHI/D3D12/D3D12ShaderResourceView.cpp @@ -29,5 +29,16 @@ void D3D12ShaderResourceView::Shutdown() { m_resource = nullptr; } +D3D12_SHADER_RESOURCE_VIEW_DESC D3D12ShaderResourceView::CreateDesc(Format format, D3D12_SRV_DIMENSION dimension, uint32_t mipLevels) { + D3D12_SHADER_RESOURCE_VIEW_DESC desc = {}; + desc.Format = ToD3D12(format); + desc.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING; + desc.ViewDimension = dimension; + if (dimension == D3D12_SRV_DIMENSION_TEXTURE2D) { + desc.Texture2D.MipLevels = mipLevels; + } + return desc; +} + } // namespace RHI } // namespace XCEngine