【发布时间】:2022-10-25 19:58:24
【问题描述】:
我尝试了所有计算粒子alpha的方法,并将shaderResource设置为绘制过程,在renderdoc中,screenDepthTexture总是没有Resource。
【问题讨论】:
标签: game-engine direct3d direct3d11
我尝试了所有计算粒子alpha的方法,并将shaderResource设置为绘制过程,在renderdoc中,screenDepthTexture总是没有Resource。
【问题讨论】:
标签: game-engine direct3d direct3d11
您可能正在尝试在管道的两个阶段同时使用相同的深度缓冲区纹理:读取像素着色器以计算柔度,并在输出合并阶段使用相同的纹理作为深度渲染目标。
这是行不通的。当您调用OMSetRenderTargets 时,该纹理的资源视图的像素着色器绑定未设置。
一个简单的解决方法是使用CopyResource 复制您的深度纹理,这样您的像素着色器可以从那里读取,而输出合并使用与深度/模板目标相同的纹理。
将来,要解决此类问题,请在创建设备时使用D3D11_CREATE_DEVICE_DEBUG 标志,并在 Visual Studio 中读取调试输出。 RenderDoc 对于更高级别的错误非常棒,当您渲染某些东西但它看起来不正确时。您的错误是不正确地使用 D3D API。对于此类事情,Windows SDK 中的调试层比 RenderDoc 更有用。
【讨论】: