2009-03-04 8 views

Respuesta

30

para el iPhone y N95 funciona esto:

Si va a cargar la textura de datos en bruto, establecer el formato interno y la fuente de GL_RGBA.

glTexImage2D(GL_TEXTURE_2D, 0, 
    GL_RGBA, 
    textureWidth, 
    textureHeight, 
    0, 
    GL_RGBA, 
    GL_UNSIGNED_BYTE, 
    pointerToPixels); 

Y cuando se representa, permitirá mezcla alfa:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
glEnable(GL_BLEND); 
+0

que funciona gracias! Como seguimiento, ¿cómo podría aumentar la transparencia de la textura después de esto? – Dimitris

+2

Utilice la modulación de color. glTexEnvx (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); Luego configure el componente alfa del color deseado. glColor4f (255, 255, 255, alfa); – Virne

11

La respuesta proporcionada por @Virne es correcta, y yo era capaz de usarlo para dispositivos Android con algunas pequeñas modificaciones. El objeto myImage que utilicé es una imagen .png estándar con transparencia.

creé la textura usando esto:

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, myImage, 0); 

Y (como Virne), que permitió a la mezcla alfa cuando se representa:

gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
gl.glEnable(GL10.GL_BLEND); 
+0

Olvidó el 'GL10' en' gl.glBlendFunc (GL10.GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); ' – Vincent

+0

¡Gracias, he editado la respuesta para corregir ese error tipográfico! – theisenp

+0

Si está decodificando el mapa de bits antes de dejarla con texImage2d, No se olvide de especificar que es un mapa de bits ARGB .: \t \t \t \t BitmapFactory.Options opta = new BitmapFactory.Options(); \t \t opts.inPreferredConfig = Bitmap.Config.ARGB_8888; \t \t Bitmap bitmap = BitmapFactory.decodeResource (context.getResources(), R.drawable.bitmap, opts); – jonathanrz

Cuestiones relacionadas