2

我想绘制许多三角形,其中每个的“颜色”实际上是内部 CPU 端数据结构的索引。

是否有任何简单(快速的方法)来更改渲染的每个三角形的颜色(索引)?我想过使用未插值的纹理,但我需要 10,000 的索引。

我意识到像素着色器无法引用另一个值,但我认为顶点类型(x, y, z, i)会起作用。

我尝试过 Ubuntu、OSX 和 OpenGL,最终在 Windows 上遇到了 DX11/12 的复杂性。

我尝试使用 Unity3d 并失败了(需要 C++ 插件,所以为什么要打扰)并且不确定如何在 OpenGL 中执行此操作。

4

1 回答 1

1

将三角形的 ID 嵌入索引顶点缓冲区是不切实际的,因为顶点(可能)将被多个三角形使用。如果您使用未索引的数据,这将是可能的。

但是,有一种更简单的方法。假设您有 GLSL 1.50 (OpenGL 3.2+),您可以在片段着色器中使用gl_PrimitiveID。同样,HLSL 具有SV_PrimitiveID语义(着色器模型 4.0+)。这将是正在绘制的三角形的“索引”。您可以使用此索引来确定相应数据的索引。数据可以作为纹理、统一数据或用于在着色器中生成颜色的论坛提供给着色器。

于 2016-04-25T12:51:11.690 回答