2

我的问题非常基本。

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

用伪代码表达我的意思:IndexBuffer[i],我想知道GPU当前正在处理的i的值。

这样做的原因是我想知道当前正在渲染哪个多边形,并且不可能仅仅通过知道顶点来判断,因为单个顶点总是在多个多边形之间共享。

我的问题是否清楚,有人可以帮助我吗?

提前致谢。

4

1 回答 1

0

简单的答案:不要共享顶点,并将多边形 ID 作为顶点属性包含在内。

如果您知道有关曲面细分的特殊事实(例如,它是一个球体,或者 UV 布置在一个网格中等 - 所以多边形的位置是可预测的),则可能会有更奇特的答案。

于 2013-03-07T01:42:29.307 回答