OpenGL(libgdx) - 混合α地图



我试图将白色纹理与彩色背景变化的白色纹理混合。我希望结果能够保留背景的颜色,并使α值被混合纹理的颜色所取代。

所以,对于背景,我使用:

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);

我期望背景三角网格覆盖目的地,颜色和alpha。

问题1-为什么使用这些BlendFunc参数,alpha值被忽略了?如果我将BlendFunc设置为gl_one,gl_one,gl_zero,gl_zero,则填充的网格将用适当的alpha级别渲染 - 但是源和dest 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-这应该保留目标颜色并替换alpha。但是,当我用这些BlendFunc参数呈现纹理时,我根本没有更改输出...

我一直在一遍又一遍地阅读OpenGL融合章节,以了解我无法理解的内容,请分享您对这些参数如何实际工作的见解

我使用此:

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

它起作用,但仅按照渲染顺序。为了说明深度,您将需要alpha测试哪些libGDX不包括。

最新更新