Replace RTV/DSV/SRV creation with wrapper classes

This commit is contained in:
2026-03-15 19:48:20 +08:00
parent 70d3879687
commit 632cba821d
7 changed files with 30 additions and 3 deletions

View File

@@ -25,6 +25,9 @@
#include "XCEngine/RHI/D3D12/D3D12PipelineState.h"
#include "XCEngine/RHI/D3D12/D3D12Buffer.h"
#include "XCEngine/RHI/D3D12/D3D12Texture.h"
#include "XCEngine/RHI/D3D12/D3D12RenderTargetView.h"
#include "XCEngine/RHI/D3D12/D3D12DepthStencilView.h"
#include "XCEngine/RHI/D3D12/D3D12ShaderResourceView.h"
#include "XCEngine/RHI/D3D12/D3D12Screenshot.h"
#include "XCEngine/Debug/Logger.h"
#include "XCEngine/Debug/ConsoleLogSink.h"
@@ -63,6 +66,8 @@ int gCurrentRTIndex = 0;
// 描述符堆
XCEngine::RHI::D3D12DescriptorHeap gSwapChainRTVHeap; // RTV堆
XCEngine::RHI::D3D12DescriptorHeap gSwapChainDSVHeap; // DSV堆
XCEngine::RHI::D3D12RenderTargetView gSwapChainRTVs[2];
XCEngine::RHI::D3D12DepthStencilView gSwapChainDSV;
UINT gRTVDescriptorSize = 0;
UINT gDSVDescriptorSize = 0;
@@ -79,6 +84,7 @@ XCEngine::RHI::D3D12Shader gPixelShader;
XCEngine::RHI::D3D12Buffer gConstantBuffer; // matrices
XCEngine::RHI::D3D12Buffer gMaterialBuffer; // material data
XCEngine::RHI::D3D12Texture gTexture; // earth texture
XCEngine::RHI::D3D12ShaderResourceView gTextureSRV; // texture SRV
// 同步对象
XCEngine::RHI::D3D12Fence gFence;
@@ -528,13 +534,13 @@ bool InitD3D12(HWND inHWND, int inWidth, int inHeight) {
gColorRTs[i] = buffer;
D3D12_CPU_DESCRIPTOR_HANDLE rtvPointer;
rtvPointer.ptr = rtvHeapStart.ptr + i * gRTVDescriptorSize;
device->CreateRenderTargetView(gColorRTs[i], nullptr, rtvPointer);
gSwapChainRTVs[i].InitializeAt(device, gColorRTs[i], rtvPointer, nullptr);
}
D3D12_DEPTH_STENCIL_VIEW_DESC d3dDSViewDesc = {};
d3dDSViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
d3dDSViewDesc.ViewDimension = D3D12_DSV_DIMENSION_TEXTURE2D;
device->CreateDepthStencilView(gDSRT, &d3dDSViewDesc, gSwapChainDSVHeap.GetCPUDescriptorHandleForHeapStart());
gSwapChainDSV.InitializeAt(device, gDSRT, gSwapChainDSVHeap.GetCPUDescriptorHandleForHeapStart(), &d3dDSViewDesc);
gCommandAllocator.Initialize(device, XCEngine::RHI::CommandQueueType::Direct);
gCommandList.Initialize(device, XCEngine::RHI::CommandQueueType::Direct, gCommandAllocator.GetCommandAllocator());
@@ -760,7 +766,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
srvDesc.Texture2D.MipLevels = 1;
D3D12_CPU_DESCRIPTOR_HANDLE srvHeapPtr = srvHeap.GetCPUDescriptorHandleForHeapStart();
d3dDevice->CreateShaderResourceView(texture, &srvDesc, srvHeapPtr);
gTextureSRV.InitializeAt(d3dDevice, texture, srvHeapPtr, &srvDesc);
srvHeapPtr.ptr += d3dDevice->GetDescriptorHandleIncrementSize(D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV);
EndCommandList();