2015-05-14 113 views
1

我試圖混合具有不同的alpha值與彩色背景的白色紋理。我希望結果能夠保留背景中的顏色,並將alpha值替換爲混合紋理中的值。OpenGL(libgdx) - 混合alpha地圖

所以,對於後臺I使用:

Gdx.gl.glEnable(GL20.GL_BLEND); 
Gdx.gl.glBlendEquationSeparate(GL20.GL_FUNC_ADD, GL20.GL_FUNC_ADD); 
Gdx.gl.glBlendFuncSeparate(GL20.GL_ONE, GL20.GL_ZERO, GL20.GL_ONE, GL20.GL_ZERO); 

我想到的背景三角形網格覆蓋的目標,無論色彩和透明度。

問題1 - 爲什麼用這些blendFunc參數,alpha值被忽略? 如果我將blendfunc設置爲GL_ONE,GL_ONE,GL_ZERO,GL_ZERO,則填充的網格將以合適的alpha級別呈現 - 但源和目標alpha都應該乘以零 - 爲什麼這會起作用?

====

我們融合了阿爾法圖我用:

Gdx.gl.glBlendEquationSeparate(GL20.GL_FUNC_ADD, GL20.GL_FUNC_ADD); 
Gdx.gl.glBlendFuncSeparate(GL20.GL_ZERO, GL20.GL_ONE, GL20.GL_ONE, GL20.GL_ZERO); 

問題2 - 這應該保持目標顏色和替換字母。但是,當我使用這些blendfunc參數渲染紋理時,我根本沒有改變輸出...

我一遍又一遍地閱讀了opengl混合章節,以瞭解我不理解的內容,請分享您對這些參數是如何工作的

回答

0

洞察我用這個:

Gdx.gl.glEnable(GL20.GL_BLEND); 
Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); 

它的工作原理,但只有在渲染的順序。爲了說明深度,您將需要libGDX不包含的alpha測試。