2009-10-20 121 views
2

所以我已經啓動了我的粒子系統並運行,只要背景是黑暗的,它看起來很棒。我的問題是我需要在淺色背景上渲染效果。我一直在嘗試很多不同的設置glBlendFunc,但無法弄清楚如何讓它工作。我目前的混合是glBlendFunc(GL_SRC_ALPHA,GL_ONE),你可以在下面的圖片中選擇不那麼令人滿意的結果。如何在淺色背景上渲染效果?OpenGL ES - 粒子效應的混合

illustration of the question http://babelstudios.se/stackoverflow/blended-particle-effect.png

回答

3

如果你有阿爾法正常OL」的質感,而你渲染後到前順序,這是要走的路:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) 

如果你的紋理已預乘alpha,而你渲染後到前順序,而是執行此操作:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA) 
+0

現在我已經研究了更多的混合,這可能是我可以得到的最接近的。我也意識到,在黑色背景下呈現爆炸的原因看起來是因爲它如何與背景相融合。 – 2009-10-22 12:47:39

0

opengl.org

您可能想要使用混合函數中 的紋理映射產生的alpha值 。如果是這樣, (GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA) 始終是一個很好的功能,用於啓動 。

但是,如果你想混合時,原始是發生 紋理貼圖 (即你想要的紋理 地圖的各個部分,以允許 原始的基本顏色來表示通過),然後 不使用OpenGL混合。相反, 您會使用glTexEnv(),並將 紋理環境模式設置爲GL_BLEND。 在這種情況下,您希望將 紋理環境顏色設置爲默認值(0,0,0,0)的 。