texture - En OpenGL ES, ¿cómo cargo una textura que tiene píxeles transparentes?
texturas multiples opengl (2)
Para iPhone y N95 esto funciona:
Si está cargando texturas a partir de datos brutos, configure el formato interno y el formato fuente en GL_RGBA.
glTexImage2D(GL_TEXTURE_2D, 0,
GL_RGBA,
textureWidth,
textureHeight,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
pointerToPixels);
Y al renderizar, habilite la mezcla alfa:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
¿Y luego mostrar correctamente? Un ejemplo sería tener una bola redonda en un rectángulo mientras se puede ver otra textura en el fondo.
editar: en este momento, cuando cargo la textura, los píxeles transparentes de la imagen original se muestran en negro.
La respuesta proporcionada por @Virne es correcta, y pude usarla 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), habilité la mezcla alfa cuando renderizaba:
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL10.GL_BLEND);