Sorting OpenGL深度排序

Sorting OpenGL深度排序,sorting,opengl,transparency,Sorting,Opengl,Transparency,我正在使用深度排序进行基本的对象透明度。作为深度,我使用相机到模型三角形每个中心的距离(平方),我计算为{(x1+x2+x3)/3,(y1+y2+y3)/3,(z1+z2+z3)/3}。虽然成绩差不多不错,但也有一些失误 猴子头不分类 分类 对于这些错误,我能做些什么吗?没有办法以完美的方式对三角形进行排序。请看opengl.org wiki上文章末尾的示例 @科斯: 请看和。除非您有屏幕对齐的粒子,否则对任意三角形进行排序确实非常困难。为了得到完美的结果,你必须开始分割三角形 正如@tib

我正在使用深度排序进行基本的对象透明度。作为深度,我使用相机到模型三角形每个中心的距离(平方),我计算为{(x1+x2+x3)/3,(y1+y2+y3)/3,(z1+z2+z3)/3}。虽然成绩差不多不错,但也有一些失误

猴子头不分类

分类


对于这些错误,我能做些什么吗?

没有办法以完美的方式对三角形进行排序。请看opengl.org wiki上文章末尾的示例

@科斯:
请看和。

除非您有屏幕对齐的粒子,否则对任意三角形进行排序确实非常困难。为了得到完美的结果,你必须开始分割三角形

正如@tibur所说,你可以用一些简单的近似值,但是(OIT)也是一个不错的解决方案。但它确实需要OpenGL 3时代的图形功能。我有一个,它显示了一些方法,使精确的OIT相当快

值得一看“,”和“。这些是快速的近似解,但对于常见场景会给出非常好的结果


一些类似的问题


从数学上讲,如果你对身体有所了解,它可以帮助你分类

例如,立方体的面可以仅按重心(面中心)进行深度排序。如果方形面A的中心比B的中心更近,则B在A前面永远不会有任何部分(同样,对于立方体)


事实上,对于凸体,面可以单独按方向排序。

固定功能或可编程管道?固定。我制作了距离数组,然后对它进行排序并交换索引数组中的相应值,最后交换元素。所以仍然没有一个解决方案可以正确地呈现任意透明度?@Kos:check and