我想绘制很多三角形,其中颜色为'每个都是内部CPU端数据结构的索引。
是否有任何简单(快捷方式)更改每个三角形渲染的颜色(索引)?我想过使用一个未插入的纹理,但我需要10,000个索引。
我意识到像素着色器无法引用另一个值,但我认为(x, y, z, i)
的顶点类型可以正常工作。
我已经尝试过使用OpenGL的Ubuntu,OSX,最终得到了Windows上DX11 / 12的复杂性。
我尝试使用Unity3d并且失败了(需要C ++插件,所以为什么要这么麻烦)并且不确定如何在OpenGL中执行此操作。
答案 0 :(得分:1)
将三角形的ID嵌入到索引的顶点缓冲区中是不切实际的,因为顶点(可能)将由多个三角形使用。如果您使用未编制索引的数据,这将是可能的。
然而,有一种更简单的方法。假设你有GLSL 1.50(OpenGL 3.2+),你可以在片段着色器中使用gl_PrimitiveID。同样,HLSL具有SV_PrimitiveID语义(着色器模型4.0+)。这将是绘制的三角形的“索引”。您可以使用此索引来确定适当数据的索引。数据可以作为纹理,统一数据或用于在着色器中生成颜色的论坛提供给着色器。