2009-03-04 3 views

Répondre

30

pour iPhone N95 cela fonctionne:

Si vous chargez la texture à partir des données brutes, définir le format interne et source GL_RGBA.

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

Et lors du rendu, activez mélange alpha:

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

Cela fonctionne grâce! En guise de suivi, comment pourrais-je augmenter la transparence de la texture après cela? – Dimitris

+2

Utiliser la modulation de couleur. glTexEnvx (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); Définissez ensuite le composant alpha de la couleur sur souhaité. glColor4f (255, 255, 255, alpha); – Virne

11

La réponse fournie par @Virne est correcte, et j'ai pu l'utiliser pour les appareils Android avec quelques petites modifications. L'objet myImage que j'ai utilisé est une image .png standard avec transparence.

J'ai créé la texture en utilisant ceci:

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

Et (comme Virne), je permis mélange alpha lors du rendu:

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

Vous avez oublié le 'GL10.' dans' gl.glBlendFunc (GL10.GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); ' – Vincent

+0

Merci, j'ai édité la réponse pour corriger cette faute de frappe! – theisenp

+0

Si vous décodent le bitmap avant de avec texImage2d, À ne pas oublier de préciser que est un bitmap ARVB .: \t \t \t \t BitmapFactory.Options opts = new BitmapFactory.Options(); \t \t opts.inPreferredConfig = Bitmap.Config.ARGB_8888; \t \t Bitmap bitmap = BitmapFactory.decodeResource (context.getResources(), R.drawable.bitmap, opts); – jonathanrz

Questions connexes