适用于Android的OpenGL ES中的透明纹理

我试图在opengl中设置四边形纹理的透明度,使用混合函数进行游戏并没有帮助他们在谷歌上做任何事情。 有什么建议么?

我有一个类似的问题,一个代码正常工作,另一个代码没有。 经过大量的日志记录和调试,我发现差异是一行代码。

在具有工作alpha的代码中,我在设置渲染器之前调用了以下内容。

setEGLConfigChooser(false) 

如果这没有帮助,这里有几个其他指针……

加载纹理之前 ,请确保已启用混合。

例如:

  // Enable blending using premultiplied alpha. gl.glEnable(GL10.GL_BLEND); gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA); 

…并确保您用于生成纹理的位图实际上具有alpha分量。

在Ron的回答之后,我接近解决了我没有显示纹理透明度的问题。 我的下一个问题是,我在GLSurfaceView后面有一个非GL SurfaceView并使用:

 setEGLConfigChooser(false); 

我看到我的纹理还可以,但我的整个SurfaceView都被涂黑了。 以下修复了我的问题:

 setEGLConfigChooser(8, 8, 8, 8, 0, 0); 

将false设置为唯一参数是禁用深度测试的一种方法,但您也可以通过将第2个参数设置为0来有效地执行相同操作。 前者将创建默认的RGB_565配置,而我需要RGBA_8888配置因此更改。

我能够使用不同的方法修复我列出的问题。 我先设定

 gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE); 

然后能够使用设置纹理的alpha

 gl.glColor4f