基于 alpha 混合的索引对三角形顶点进行排序(从后到前)C++、OpenGL

计算科学 排序
2021-12-19 20:55:45

我已经在 OpenGL Alpha 混合中实现了三角形网格。我使用一个索引向量来渲染这个网格,该向量指示应该从顶点向量中绘制哪个顶点。问题是正确应用半透明三角形应该从后到前排序(基于与相机的距离)。仅对索引列表进行排序不会这样做,因为我每次都需要 3 个索引来创建一个三角形。有没有办法对顶点列表进行排序,以便索引正确指向该列表而不改变索引的顺序?

非常感谢,

任何帮助表示赞赏!

1个回答

您可以使用稳定的排序算法取数组,并根据 (这里是您传递给函数的比较器函数。)[1,,3n]

sorts-before(i,j)=in-front-of(triangle(i3),triangle(j3)).
sorts-beforeijsort

如果算法是稳定的,它的性质是当都为假时,的顺序将被保留在排序后的数组中。特别是,如果您确保始终为假,则需要稳定的排序算法将索引的三元组保持在右侧排序,并且只重新排序三元组。sorts-before(i,j)sorts-before(j,i)ijsorts-before(i,j)i,j