在DirectX 12上渲染多个模型bug

时间:2016-08-11 19:27:48

标签: rendering directx-12 graphicscontext

我试图仅使用一个图形上下文在DirectX 12上渲染多个模型,但结果非常奇怪,我不知道是什么原因。 enter image description here从外部渲染sponza模型的结果,右边的那个是正确的结果,左边的那个有问题。

enter image description here从内部渲染左侧的两个结果(一个有问题)。

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

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

1 个答案:

答案 0 :(得分:-1)

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

这里没有关于你的问题的详细信息,我只能给你一些基本的建议:

  1. 使用调试层运行并使用D3D12GetDebugInterface查看控制台日志(您需要安装名为图形工具的可选功能)
  2. 使用框架捕获工具,如Visual Studio中的VSGD或来自nVidia的nsight,并逐步检查框架
  3. 使用Dx11,真的