diff --git a/tests/D3D12/main.cpp b/tests/D3D12/main.cpp index 48522b33..40a3dcdd 100644 --- a/tests/D3D12/main.cpp +++ b/tests/D3D12/main.cpp @@ -59,7 +59,7 @@ XCEngine::RHI::D3D12CommandQueue gCommandQueue; XCEngine::RHI::D3D12SwapChain gSwapChain; // 渲染目标 (SwapChain的后台Buffer) -ID3D12Resource* gColorRTs[2]; // 颜色缓冲 (双缓冲) +XCEngine::RHI::D3D12Texture gColorRTs[2]; // 颜色缓冲 (双缓冲) int gCurrentRTIndex = 0; // 描述符堆 @@ -438,10 +438,10 @@ bool InitD3D12(HWND inHWND, int inWidth, int inHeight) { for (int i = 0; i < 2; i++) { ID3D12Resource* buffer = nullptr; gSwapChain.GetSwapChain()->GetBuffer(i, IID_PPV_ARGS(&buffer)); - gColorRTs[i] = buffer; + gColorRTs[i].InitializeFromExisting(buffer); D3D12_CPU_DESCRIPTOR_HANDLE rtvPointer; rtvPointer.ptr = rtvHeapStart.ptr + i * gRTVDescriptorSize; - gSwapChainRTVs[i].InitializeAt(device, gColorRTs[i], rtvPointer, nullptr); + gSwapChainRTVs[i].InitializeAt(device, gColorRTs[i].GetResource(), rtvPointer, nullptr); } D3D12_DEPTH_STENCIL_VIEW_DESC d3dDSViewDesc = {}; d3dDSViewDesc.Format = DXGI_FORMAT_D24_UNORM_S8_UINT; @@ -493,7 +493,7 @@ void EndCommandList() { //================================================================================= void BeginRenderToSwapChain(ID3D12GraphicsCommandList* inCommandList) { gCurrentRTIndex = gSwapChain.GetCurrentBackBufferIndex(); - D3D12_RESOURCE_BARRIER barrier = InitResourceBarrier(gColorRTs[gCurrentRTIndex], D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET); + D3D12_RESOURCE_BARRIER barrier = InitResourceBarrier(gColorRTs[gCurrentRTIndex].GetResource(), D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET); inCommandList->ResourceBarrier(1, &barrier); D3D12_CPU_DESCRIPTOR_HANDLE colorRT, dsv; dsv.ptr = gSwapChainDSVHeap.GetCPUDescriptorHandleForHeapStart().ptr; @@ -513,7 +513,7 @@ void BeginRenderToSwapChain(ID3D12GraphicsCommandList* inCommandList) { // 状态转换: RENDER_TARGET → PRESENT //================================================================================= void EndRenderToSwapChain(ID3D12GraphicsCommandList* inCommandList) { - D3D12_RESOURCE_BARRIER barrier = InitResourceBarrier(gColorRTs[gCurrentRTIndex], D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT); + D3D12_RESOURCE_BARRIER barrier = InitResourceBarrier(gColorRTs[gCurrentRTIndex].GetResource(), D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT); inCommandList->ResourceBarrier(1, &barrier); } @@ -526,7 +526,7 @@ bool SaveScreenshot(const char* filename, int width, int height) { ID3D12Device* device = gDevice.GetDevice(); ID3D12CommandQueue* queue = gCommandQueue.GetCommandQueue(); - ID3D12Resource* renderTarget = gColorRTs[gCurrentRTIndex]; + ID3D12Resource* renderTarget = gColorRTs[gCurrentRTIndex].GetResource(); Log("[DEBUG] SaveScreenshot: calling D3D12Screenshot::Capture\n"); bool result = XCEngine::RHI::D3D12Screenshot::Capture(