2009-07-16 83 views
1

我正在學習如何使用JOGL和OpenGL渲染紋理映射四邊形。我有一個測試程序和一個測試四元組,我想出瞭如何啓用GL_BLEND,以便我可以指定一個頂點的alpha值來製作具有某種梯度的四元組... ...但是現在我希望通過它來顯示另一個紋理四方在相同的位置。你可以在同一點渲染兩個四邊形透明度?

繪製兩個具有相同頂點位置的四邊形不起作用,它只渲染第一個四邊形。那麼這是可能的,還是我需要基於我想要的基本構建一個自定義紋理,然後用這個紋理繪製一個四邊形?我真的希望採取在這種情況下混合的優勢...

+0

看看你正在使用哪個glDepthFunc,也許你正在使用GL_LESS/GL_GREATER,如果你使用GL_LEQUAL/GL_GEQUAL,它可以工作 - 儘管如果涉及到透明度,這也許並不重要。 – schnaader 2009-07-16 17:01:51

回答

2

有你使用在該glDepthFunc,也許你正在使用GL_LESS/GL_GREATER,它可能如果你使用GL_LEQUAL/GL_GEQUAL工作看看。

0

它很難辨認出你想達到什麼問題的,但這裏有一個嘗試

對於透明度,在OpenGL中正常工作您需要從最遠處到最近的相機繪製多邊形。如果你的場景是靜態的,這絕對是你可以做的事情。但是如果它正在旋轉和移動,那麼這通常是不可行的,因爲您必須爲每一幀對多邊形進行排序。

更多內容可在此FAQ頁中找到:
http://www.opengl.org/resources/faq/technical/transparency.htm

0

對於α混合,渲染器當時的透明物體的共混物的當前透明物體後面的所有顏色(從攝像機視點)被渲染。如果首先渲染透明對象,那麼它就沒有任何東西可以混合。如果它呈現第二,它將有一些東西來融合它。

嘗試先渲染你的不透明四邊形,然後渲染你的透明四次方。此外,請確保您的不透明四元組稍微落後於透明四元組(相對於相機),因此您不會獲得z緩衝區條紋。