Direct3D12 调用 ClearRenderTargetView 失败
Direct3D12 failed to call ClearRenderTargetView
源代码:https://github.com/AinoMegumi/Direct3D12
我正在尝试初始化 Direct3D12 Window。
在函数Direct3D12::OnFrameRender中(查看上面的源代码,Direct3D12.cpp第251行),
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);
}
现在,我尝试调用 ClearRenderTargetView。但是,KernelBase.dll 引发了未处理的异常。
我调查 KernelBase.dll 并检测谁抛出异常。
观看这个 asm 转储
https://pastebin.com/YBJLMBxE
场景是
- 在地址 00007FF8E6380977 上调用
- 地址 00007FF8E6368AF2 系统调用
- 跳转到地址 00007FF8E6380977!!!!
- 跳转到地址00007FF8E6368AE0
- 地址 00007FF8E6368AF2 系统调用,
错误信息是
在 0x00007FF8E27F3C58 (KernelBase.dll)(在 Direct3D.exe)处发生未处理的异常:0x0000087D(参数:0x0000000000000000、0x00000028379BCE20、0x0000021B7FD80FB0)。
使用 ClearRenderTargetView 和初始化的正确方法是什么 window?
正确的RenderTargetView
调用场景如下
- 使
CD3DX12_CPU_DESCRIPTOR_HANDLE
变量每次
- 传给
OMSetRenderTargets
- 致电
ClearRenderTargetView
源代码:https://github.com/AinoMegumi/Direct3D12
我正在尝试初始化 Direct3D12 Window。
在函数Direct3D12::OnFrameRender中(查看上面的源代码,Direct3D12.cpp第251行),
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);
}
现在,我尝试调用 ClearRenderTargetView。但是,KernelBase.dll 引发了未处理的异常。
我调查 KernelBase.dll 并检测谁抛出异常。
观看这个 asm 转储 https://pastebin.com/YBJLMBxE
场景是
- 在地址 00007FF8E6380977 上调用
- 地址 00007FF8E6368AF2 系统调用
- 跳转到地址 00007FF8E6380977!!!!
- 跳转到地址00007FF8E6368AE0
- 地址 00007FF8E6368AF2 系统调用,
错误信息是
在 0x00007FF8E27F3C58 (KernelBase.dll)(在 Direct3D.exe)处发生未处理的异常:0x0000087D(参数:0x0000000000000000、0x00000028379BCE20、0x0000021B7FD80FB0)。
使用 ClearRenderTargetView 和初始化的正确方法是什么 window?
正确的RenderTargetView
调用场景如下
- 使
CD3DX12_CPU_DESCRIPTOR_HANDLE
变量每次 - 传给
OMSetRenderTargets
- 致电
ClearRenderTargetView