问题描述
我有 D3D11 的经验,想学习 D3D12。我正在阅读 official D3D12 multithread example 并且不明白为什么为每一帧创建阴影贴图(在第一遍中作为 DSV 生成,在第二遍中作为 SRV 使用)(实际上只有 2 个副本,因为 { {1}} 每 2 帧重复使用一次)。
创建阴影贴图资源的代码是 here,在 FrameResource
类中,其实例创建为 here。
实际上还有一个为每一帧创建的资源,常量缓冲区。我有点理解常量缓冲区。因为是CPU写的(D3D11动态使用),需要保持不变,直到GPU用完,所以需要2份。但是,我不明白为什么阴影贴图需要做同样的事情,因为它只被 GPU 修改(D3D11 默认使用),并且无论如何都有栅栏命令来分离对该纹理的读取和写入。只要 GPU 遵循围栏,单个纹理就足以让 GPU 正常工作。我哪里错了?
提前致谢。
编辑
根据下面的评论,我上面提到的“栅栏”应该更准确地称为“资源屏障”。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)