Replace RTV/DSV/SRV creation with wrapper classes
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user