2010-03-02 20 views

Respuesta

30

Tuve un problema similar, con un código que funcionaba correctamente y otro que no. Después de mucho registro y depuración, descubrí que la diferencia era una línea de código.

En el código que tenía alfa funcionando, llamaba a lo siguiente antes de configurar mi procesador.

setEGLConfigChooser(false) 

Si esto no funciona, aquí hay un par de punteros ...

Asegúrese de que ha habilitado la mezcla antes de cargar la textura.

Por ejemplo:

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

... y asegurarse de que el mapa de bits que utiliza para generar la textura en realidad tiene un componente alfa.

+0

Eso lo solucionó para mí, ¡muchas gracias! –

+0

funcionó para mí también, gracias :) – nicoptere

+0

¡Usted señor es un dios! – torger

1

Pude solucionar mi problema enumerado utilizando un método diferente. Me primer conjunto

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

Entonces era capaz de establecer el alfa de una textura usando

gl.glColor4f 
1

Tras la respuesta de Ron llegué más cerca de resolver mi problema de la transparencia de la textura no se muestra. El siguiente problema que tuve fue, tenía un no-GL SurfaceView detrás de mi GLSurfaceView y mediante el uso de:

setEGLConfigChooser(false); 

vi la textura de mi bien, pero toda mi SurfaceView se perdió el conocimiento. El siguiente fijo mi problema:

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

Configuración falso como el único parámetro es una manera de desactivar las pruebas de profundidad, pero se puede hacer efectiva la misma estableciendo el segundo al último parámetro a 0 también. El primero creará una configuración RGB_565 predeterminada, mientras que requirí una configuración RGBA_8888, por lo tanto, el cambio.

Cuestiones relacionadas