HLSL着色器并访问GPU在索引缓冲区中的当前位置

时间:2013-02-22 15:02:02

标签: xna hlsl

我的问题很基本。

是否有一个HLSL着色器指令或着色器代码中的任何方式来访问GPU在索引缓冲区数组中的当前位置?我正在使用XNA Game Studio 4.0,它通过GraphicsDevice.DrawIndexedPrimitives()方法将VertexBuffers和IndexBuffers传递给每个网格的图形管道。我知道GPU在内部迭代了IndexBuffer,但我希望能够确定IndexBuffer中GPU当前所在的条目:

表达我在psuedocode中的意思: IndexBuffer [i],我想知道GPU当前处理的i的值。

原因是我想知道当前正在渲染哪个多边形,并且仅通过知道顶点就无法分辨,因为单个顶点总是在多个多边形之间共享。

我的问题是否明确,任何人都可以帮助我吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

简单回答:不要共享顶点,并将多边形ID包含为顶点属性。

如果您了解有关曲面细分的特殊事实(例如,它是一个球体,或者UV在网格中布局等等 - 因此多边形的位置是可预测的),那么Fancier答案可能是可能的。