2010-03-02 14 views

cevap

30

Benzer bir sorun vardı, tek bir kod parçası doğru çalıştı ve başka bir şey yapmadı. Çok fazla günlüğe kaydetme ve hata ayıklamadan sonra farkın bir satır kod olduğunu anladım.

Çalışma alfa olan kodda, oluşturucumu ayarlamadan önce aşağıdakileri çağırıyordum. Bu işe yaramazsa

setEGLConfigChooser(false) 

, burada diğer işaretçiler birkaç ...

Eğer doku yüklemek önce karıştırma etkinleştirdiğinizden emin olun vardır.

Örneğin

:

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

... ve doku oluşturmak için kullandığınız bitmap aslında bir alfa bileşenine sahip olduğundan emin olun.

+0

Bu benim için sabit - çok teşekkürler! –

+0

benim için de çalıştı, teşekkürler :) – nicoptere

+0

Siz bir tanrınız! – torger

1

Sorunumu farklı bir yöntem kullanarak listelemeyi başardım. İlk Sonra

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

set daha yakın göstermiyor Doku şeffaflık benim problem çözme için var Ron'un cevap takiben

gl.glColor4f 
1

kullanarak bir doku alfa ayarlamak başardı.

setEGLConfigChooser(false); 

tamam benim dokusunu gördüm ama benim bütün SurfaceView karartılmış edildi: Ben önümüzdeki mesele benim GLSurfaceView arkasında olmayan bir GL SurfaceView vardı ve kullanarak, oldu. Aşağıdaki sabit Sorunum:

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

tek parametre olarak yanlış ayarlanması derinlik testi devre dışı bırakmak için bir yol ama etkili yanı 0'a son parametreye 2'nci ayarlayarak aynısını yapabilirsiniz. Önceden bir varsayılan RGB_565 yapılandırması yaratacak, buna karşın bir RGBA_8888 yapılandırması gerekti ve bu nedenle değişiklik.