DirectX 10中的平均三角形

Average triangles in DirectX 10

本文关键字:三角形 DirectX      更新时间:2023-10-16

所以我基本上想为我的项目检查一些信息。我有GTX 460视频卡。我写了DX10程序,在屏幕上打印了20k个三角形,现在我在发布版本中获得了28 FPS。所有这些三角形内部都调用DrawIndexed,所以这当然是调用这么多绘图的开销。

但无论如何,我想知道:使用这些功能,我可以在屏幕上画多少三角形,以何种FPS?我认为2万个三角形甚至不足以在游戏场景中加载一些好的模型。

对不起,我的英语太差了。

听起来你正在为每个三角形基元创建一个绘制调用,这非常糟糕,因此FPS非常可怕,你应该以每个绘制调用绘制尽可能多的三角形为目标,这可以通过以下几种方式实现:

  • 评测你的代码,nVidia和AMD都可以免费为你找到代码慢的原因,让你能够专注于真正重要的地方,所以使用它们
  • 索引缓冲区&三角形条带可减少带宽
  • 按材料类型/状态/质地对涵洞进行分组,以改进配料
  • 图元组的实例化:在一次调用中绘制多个模型/网格
  • 删除尽可能多的冗余状态更改(着色器、纹理、缓冲区、参数的设置),这与前面提到的组密切相关

DX SDK将提供实现其中每一个的示例。你可以绘制的三角形的确切数量和一个不错的FPS(如果你想要vsync,可以是30或60)因三角形着色的复杂性而变化很大,然而,如果绘制得最简单,你应该能够轻松地推送几百万。

我建议好好看看开源DX11(DX10项目不多,但API几乎完全相同)引擎的内部结构,如heirglyph3,并阅读SDK教程。

也有很多关于使用DX10提高性能的演示,但在深入研究建议之前先对您的代码进行分析。下面是硬件供应商自己的一些演示(nVidia与AMD硬件的颜色编码提示):

  • GDC'08
  • GDC'09