Direct3D12无法致电ClelenderTargetView
Direct3D12 failed to call ClearRenderTargetView
本文关键字:ClelenderTargetView Direct3D12 更新时间:2023-10-16
源代码:https://github.com/ainomegumi/direct3d12
2 2 2 2 2我正在尝试启动Direct3D12窗口。
在函数direct3d12 :: onframerender中
void Direct3D12::OnFrameRender() {
this->CommandList->RSSetViewports(0, &this->ViewPort);
SetResourceBarrier(D3D12_RESOURCE_STATE_PRESENT, D3D12_RESOURCE_STATE_RENDER_TARGET);
float ClearColor[4] = { static_cast<float>(0xff) / 255.0f, static_cast<float>(0xc0) / 255.0f, static_cast<float>(0xcb) / 255.0f, 1.0f };
this->CommandList->ClearRenderTargetView(this->CPUDescriptorHandle, ClearColor, 0, nullptr); // ここで落ちてる
SetResourceBarrier(D3D12_RESOURCE_STATE_RENDER_TARGET, D3D12_RESOURCE_STATE_PRESENT);
this->Present(0);
}
现在,我尝试调用RenderTargetView。但是,从kernelbase.dll刺了未手的异常。
i调查kernelbase.dll并检测到谁投掷例外。
观看此ASM转储https://pastebin.com/ybjlmbxe
场景是
- 在地址00007FF8E6380977呼叫
- 在地址上00007FF8E6368AF2 SYSCALL
- 跳到地址00007FF8E6380977 !!!!
- 跳到地址00007FF8E6368AE0
- 在地址上00007FF8E6368AF2 SYSCALL,
错误消息是
未处理的例外发生在0x007ff8e27f3c58(kernelbase.dll)中(在Direct3D.exe中):0x0000087D(参数:0x000000000000000000,0x0000000028379BCE20,0x00000028379BCE20,0X00021B7FD80FB 0)。
使用ClenderTargetView和Init Window的正确方法是什么?
正确的 RenderTargetView
呼叫方案在
- 使
CD3DX12_CPU_DESCRIPTOR_HANDLE
变量每次 - 将其传递给
OMSetRenderTargets
- 致电
ClearRenderTargetView
https://github.com/ainomegumi/direct3d12/blob/ed1650b59aba61648e4575758dc759a4159a415dfb6b17/direct3d/direct3d/direct3d/direct3d12.cpppppp#l266
相关文章:
- 没有找到相关文章