我正在做深度排序的基本對象透明度。由於深度使用從相機到模型三角形的每個中心的距離(平方),我計算爲{(x1 + x2 + x3)/ 3,(y1 + y2 + y3)/ 3,(z1 + z2 + z3)/ 3}。雖然結果幾乎沒有問題,但也有一些錯誤。OpenGL深度排序
猴子頭不排序
與排序
有什麼我可以做這些錯誤?
我正在做深度排序的基本對象透明度。由於深度使用從相機到模型三角形的每個中心的距離(平方),我計算爲{(x1 + x2 + x3)/ 3,(y1 + y2 + y3)/ 3,(z1 + z2 + z3)/ 3}。雖然結果幾乎沒有問題,但也有一些錯誤。OpenGL深度排序
猴子頭不排序
與排序
有什麼我可以做這些錯誤?
有沒有辦法在一個完美的方式三角形整理。查看opengl.org wiki上Transparency Sorting文章末尾的示例。
@kos: 查看Order Independent Transparency with Dual Depth Peeling和Alpha to Coverage。
除非你有屏幕排列的粒子,分揀任意三角形真的是相當困難的。要獲得完美的結果,您必須開始分割三角形。
由於@tibur說,你可以逃脫一些簡單的近似,但order-independent transparency(OIT)是一個體面的解決辦法了。但它確實需要OpenGL 3時代的圖形功能。我有一個implementation available on github,它顯示了一些方法可以使OIT相當快地完成確切的 OIT。
值得看看「adaptive transparency」,「multi-layer alpha blending」和「hybrid transparency」。這些都是快速近似的解決方案,但對於常見場景會有很好的效果
一些類似的問題...
從數學上來說,如果你知道一些關於身體它可以幫助排序。
例如立方體的面可以由深度單獨重心(面中心)進行分類。如果方臉A的中心比B的中心更近,則B將永遠不會有A前面的任何部分(再次,對於立方體)。
事實上,對於凸體,臉可以是僅按方向排序。
固定功能或可編程流水線? – genpfault 2010-11-29 17:32:32
已修復。我做了距離數組,然後對它進行排序並在索引數組中交換相應的值,最後在glDrawElements中交換。 – spacevillain 2010-11-30 22:02:03