首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Direct3D12未能调用ClearRenderTargetView

Direct3D12未能调用ClearRenderTargetView
EN

Stack Overflow用户
提问于 2017-09-29 14:36:30
回答 1查看 260关注 0票数 0

源代码:https://github.com/AinoMegumi/Direct3D12

我正在尝试插入Direct3D12窗口。

在函数Direct3D12::OnFrameRender (上面的监视源代码,Direct3D12.cpp第251行),

代码语言:javascript
复制
    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

情况是

  1. 地址00007FF8E6380977
  2. 地址00007FF8E6368AF2系统电话
  3. 跳到00007FF8E6380977!
  4. 跳转到地址00007FF8E6368AE0
  5. 在00007FF8E6368AF2系统电话上,

错误信息是

0x00007FF8E27F3C58 (KernelBase.dll)で発生しました(Direct3D.exe内):0x0000087D (パラメーター: 0x0000000000000,0x00000028379BCE20,0x0000021B7FD80FB0)。

使用ClearRenderTargetView和init窗口的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-17 13:12:46

正确的RenderTargetView调用场景如下

  1. 使CD3DX12_CPU_DESCRIPTOR_HANDLE变量用于每次
  2. 把它传递给OMSetRenderTargets
  3. 调用ClearRenderTargetView

https://github.com/AinoMegumi/Direct3D12/blob/eed1650b59aba61648e45758dc759a415dfb6b17/Direct3D/Direct3D12.cpp#L263-L266

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46491169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档