我的问题很基本。
是否有一个HLSL着色器指令或着色器代码中的任何方式来访问GPU在索引缓冲区数组中的当前位置?我正在使用XNA Game Studio 4.0,它通过GraphicsDevice.DrawIndexedPrimitives()方法将VertexBuffers和IndexBuffers传递给每个网格的图形管道。我知道GPU在内部迭代了IndexBuffer,但我希望能够确定IndexBuffer中GPU当前所在的条目:
表达我在psuedocode中的意思: IndexBuffer [i],我想知道GPU当前处理的i的值。
原因是我想知道当前正在渲染哪个多边形,并且仅通过知道顶点就无法分辨,因为单个顶点总是在多个多边形之间共享。
我的问题是否明确,任何人都可以帮助我吗?
提前致谢。
答案 0 :(得分:0)
简单回答:不要共享顶点,并将多边形ID包含为顶点属性。
如果您了解有关曲面细分的特殊事实(例如,它是一个球体,或者UV在网格中布局等等 - 因此多边形的位置是可预测的),那么Fancier答案可能是可能的。