標題必須似乎有些神祕,但我真的無法解釋有什麼我想做的事情,所以我畫了一幅畫想象我的問題:我可以使用OpenGL-ES glBlendFunc來影響混合來考慮目標嗎?
的黑色部分是透明的(又名阿爾法= 0 )。我在framebuffer中有藍色對象(左邊),並且想要將白色位圖(中間)渲染到它上面,以便它看起來像合併的位圖(右側)。
問題是,如果我使用標準glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
白色物體的整個部分正在顯示。我不希望它完全覆蓋framebuffer中的東西(藍色),但只能在alpha值> 0(可見)的部分顯示。然後它也應該考慮自己的alpha值(注意白色物體的孔)。
是這樣的可能與glBlendFunc或我必須爲此編寫着色器?
PS:我看了glBlendFunc的文檔,在http://www.khronos.org/opengles/documentation/opengles1_0/html/glBlendFunc.html,但我真的沒有得到它的任何地方。
PPS:我在C++上使用Android上的OpenGL-ES 2.0,但我認爲語言/平臺並不重要。
嗨,謝謝你的回覆,我認爲你是對的。我試過用glBlendFunc和glAlphaFunc,但經過思考,我不認爲它可能是這樣的。我不能使用Stencil來做我想做的事情,因爲這會過度殺傷,但我只是寫了一個新的着色器,並創建了第二個幀緩衝區,現在它就可以工作。謝謝你的建議。 – HardCoder 2012-03-11 16:46:47