DirectX 10中的平均三角形
Average triangles in DirectX 10
所以我基本上想为我的项目检查一些信息。我有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
相关文章:
- 绘制旋转的三角形
- 如何在directx/c++中进行平移/缩放操作
- 如何用for循环在c++中生成单词三角形
- 如何使用递归打印修改后的星号三角形图案
- DrawIndexedInstanced 具有不同的 Index Count per Instance (Directx
- C++ 创建带有 for 循环的三角形
- 绘制顺时针三角形,重新排序点
- 在顶点着色器中使用 OpenGl 的未声明标识符,我在顶点着色器中绘制三角形时遇到问题
- Eigen c++ 三角形来自
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 使用对象文件读取三角形数据网格
- 是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?
- 创建一个绿色三角形C Directx
- Directx 11:重建三角形以支持四边形
- DirectX 10中的平均三角形
- 在DirectX 9中使用可扩展数组绘制三角形
- Directx 11渲染问题,没有三角形显示
- DirectX 9.0(世界坐标移动我的对象(三角形)动画
- 在DirectX中围绕质心旋转一个等边三角形
- DirectX 9在TRIANGLEFAN中隐藏第一个三角形