XNA / DirectX:你应该总是使用指数吗?

时间:2009-05-24 23:40:39

标签: directx xna vertex-buffer

我正在实施植被广告牌,其中广告牌当然是由两个三角形组成的单个四边形。顶点数据存储在顶点缓冲区中,但我应该打扰索引吗?据我所知,当使用索引时,在发送到显卡的顶点方面,地形等方面的节省可能会很大,但在广告牌上使用索引意味着我每个四边形有4个顶点而不是6个,因为每个四边形都是完全的与其他人分开。

是否有可能使用索引实际上会降低性能,因为存在额外的间接级别?或者根本没有任何意义?

我问这个是因为使用索引会使问题稍微复杂化,我很想知道我是否做了额外的工作,只是让事情变得更慢(无论是理论上还是实际上明显的)。

这是使用XNA,但应该适用于DirectX。

2 个答案:

答案 0 :(得分:2)

使用索引不仅可以通过向卡发送更少的数据来节省带宽,还可以减少顶点着色器必须完成的工作量。如果有一个索引用作键,则可以缓存顶点着色器的结果。

如果渲染大量的这种广告牌植被并且不改变你的索引缓冲区,我认为你应该看到一个小的收益。

答案 1 :(得分:1)

当谈到非常原始的gemotery时,使用索引可能没有任何意义,在这种情况下我甚至不会打扰性能,即使是适度的HW也会在几秒钟内呈现数百万个三角形。

现在,从技术上讲,你不知道HW如何在内部处理数据,它可能会将它们转换为索引,因为这是最流行的几何表示形式。