有没有办法告诉我们在一个顶点着色器(即绘制三角形)中正在处理三个顶点中的哪一个?
使用gl_VertexID
对我来说不起作用,因为它给出顶点列表中顶点的索引,但是我使用索引来指定绘制顶点的不同顺序,所以我想要的价值无法单独从gl_VertexID
确定。
答案 0 :(得分:1)
您可以添加顶点属性来表示索引0,1,2,但正如@matic-oblak所指出的,您可能必须复制三角形之间共享的一些顶点。如果网格是“三可着色的”(在图论的意义上),那么你可以在没有任何复制的情况下分配索引。
四面体不 3-colorable,而立方体是2-colorable,我们可以对立方体的面进行三角测量并获得3个可着色的网格。普通顶点在三角形网格中具有度数6并且是“局部”3可着色的。
因此,您可以尽可能地对网格进行三色处理 - 如果它失败,则必须复制顶点。不幸的是3-coloring is an NP-complete problem ,但通过一些简单的启发式方法,我认为你可以做一个相当合理的工作。
答案 1 :(得分:0)
正如我在上面评论的那样,我所寻找的是故意因管道效率原因而无法使用。请参阅以下页面中Alfonse Reinheart的评论:
wcochran发布的另一个答案很有意思,可能是一种将更少的信息传递给渲染管道的方法,尽管他/她指出,它的代价是一些实质性的预处理。