2010-03-02 10 views

Répondre

30

J'ai eu un problème similaire, avec un morceau de code qui a fonctionné correctement et un autre qui n'a pas fonctionné correctement. Après beaucoup de journalisation et de débogage, j'ai trouvé que la différence était une ligne de code.

Dans le code qui fonctionnait en alpha, j'appelais ce qui suit avant de définir mon moteur de rendu.

setEGLConfigChooser(false) 

Si cela ne fonctionne pas, voici quelques autres pointeurs ...

Assurez-vous que vous avez activé le mélange avant vous chargez la texture.

Par exemple:

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

... et assurez-vous que le bitmap que vous utilisez pour générer la texture a en fait un composant alpha.

+0

Qui l'a fixé pour moi - merci beaucoup! –

+0

a travaillé pour moi aussi, merci :) – nicoptere

+0

Vous monsieur est un dieu! – torger

1

J'ai été en mesure de résoudre mon problème répertorié en utilisant une méthode différente. J'ai d'abord mis

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

ensuite été en mesure de définir l'alpha d'une texture en utilisant

gl.glColor4f 
1

Après la réponse de Ron, je suis plus près de résoudre mon problème de la transparence de la texture ne pas afficher. La question suivante que j'avais été, j'avais un non-GL SurfaceView derrière mon GLSurfaceView et en utilisant:

setEGLConfigChooser(false); 

j'ai vu ma texture bien, mais tout mon SurfaceView a été noircis. Ce qui suit fixe mon problème:

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

Réglage faux que le seul paramètre est un moyen de désactiver le test de profondeur mais vous pouvez effectivement faire la même chose en réglant le 2 au dernier paramètre à 0 aussi bien. Le premier va créer une config RGB_565 par défaut alors que j'ai besoin d'une config RGBA_8888 d'où le changement.

Questions connexes