0

我试图仅使用一个图形上下文在 DirectX 12 上渲染多个模型,但结果非常奇怪,我不太清楚是什么原因。在此处输入图像描述sponza 模型从外部渲染结果,右边是正确的结果,左边是有问题的。

在此处输入图像描述从内部渲染左侧 sponza(有问题的)的结果。

即使加载的两个网格是相同的,每个模型都有自己的顶点缓冲区、索引缓冲区和 SRV。在创建图形上下文的过程中,只有一个图形上下文,并设置了每个模型的索引和顶点缓冲区,然后我调用drawIndexed()函数进行渲染。创建图形上下文后,我们每帧执行一次图形上下文。但是,如果我们为每个模型创建单独的图形上下文并每帧执行所有图形上下文,则渲染效果很好,但帧速率下降了很多。

提供有关导致奇怪结果的原因的任何提示将对您非常有帮助,或者提供更好的解决方案。非常感谢您。

4

1 回答 1

-1

首先,我建议您远离 dx12 并坚持使用 dx11,除非您已经是 dx11 专家并且您是前 1% 的应用案例,例如三 A 游戏或对 gpu 内存控制的非常具体的高要求。

这里没有太多关于你的问题的细节,我只能给你一些基本的建议:

  1. 使用调试层运行并查看控制台日志D3D12GetDebugInterface(您需要安装名为图形工具的可选功能)
  2. 使用帧捕获工具,例如 Visual Studio 中的 VSGD 或 nVidia 中的 nsight,并逐步检查您的帧
  3. 使用Dx11,真的
于 2016-08-12T05:04:23.950 回答