2010-03-02 511 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配置,因此需要更改。