2010-03-02 664 views

回答

30

我有一个类似的问题,一个代码工作正常,另一个没有。经过大量的日志记录和调试后,我发现它们之间的区别只是一行代码。

在工作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分量。

+0

为我修好了 - 非常感谢! – 2010-11-27 13:54:25

+0

也为我工作,谢谢:) – nicoptere 2011-06-17 14:01:21

+0

你先生是上帝! – torger 2013-01-06 11:14:33

1

我能解决使用不同方法列出的问题。我第一次

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

然后能够使用

gl.glColor4f 
1

继罗恩的答案,我走近解决我的纹理的透明度的问题不显示设置纹理的Alpha。下一个问题我是,我有一个非GL SurfaceView我GLSurfaceView后面,通过使用:

setEGLConfigChooser(false); 

我看到了我的质地不错,但我的整个SurfaceView被涂黑。下面固定我的问题:

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

设置为false作为唯一的参数是禁用深度测试的一种方法,但你可以通过有效的第二到最后一个参数设置为0,以及这样做。前者将创建一个默认的RGB_565配置,而我需要一个RGBA_8888配置,因此需要更改。