2015-05-14 121 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测试。