【发布时间】:2016-08-11 19:27:47
【问题描述】:
我试图仅使用一个图形上下文在 DirectX 12 上渲染多个模型,但结果非常奇怪,我不太清楚是什么原因。 sponza 模型从外部渲染结果,右边是正确的结果,左边的有问题。
即使加载的两个网格是相同的,每个模型都有自己的顶点缓冲区、索引缓冲区和 SRV。在创建图形上下文的过程中,只有一个图形上下文,并设置了每个模型的索引和顶点缓冲区,然后我调用drawIndexed()函数进行渲染。创建图形上下文后,我们每帧执行一次图形上下文。但是,如果我们为每个模型创建单独的图形上下文并每帧执行所有图形上下文,则渲染效果很好,但帧速率会下降很多。
提供有关导致奇怪结果的原因的任何提示对您非常有帮助,或者提供解决方案会更好。非常感谢您。
【问题讨论】:
-
你叫什么图形上下文? d3d12中没有这样的东西,你是在说命令列表吗?
-
是的。图形上下文是在 DirectX 12 示例的迷你引擎中定义的结构。
-
Direct3D 12 添加了许多额外的方法来搞乱 Direct3D 11 上的渲染,因此在尝试使用 DX12 之前很好地调试图形问题非常重要。在隔离问题之前,您需要一次更改一件事,并记住,使用 DX12,您可能需要额外的栅栏、渲染屏障或其他更改来控制重用资源的时间。您还应该尝试使用 WARP 以确保它不是特定于驱动程序的问题。
标签: rendering directx-12 graphicscontext