2010-05-22 6 views
2

Je me demandais pourquoi le brouillard que j'utilise en opengl es sur mon téléphone android n'est pas transparent lorsque je mets les couleurs alpha à 0. J'ai mis l'arrière-plan à transparent et ça fonctionne bien et la couleur La classe ou la méthode toFloatBuffer() fonctionnent bien pour mes maillages mais quand je mets la couleur fog à la transparence alors ce fait est ignoré. voici le code de base que je l'utilise pour le brouillard dans la méthode onSurfaceCreated() de mon renderer:opengl es brouillard transparent dans android

gl.glFogf(GL10.GL_FOG_MODE, GL10.GL_LINEAR); 
gl.glFogf(GL10.GL_FOG_START, 4.0f); 
gl.glFogf(GL10.GL_FOG_END, 10.0f); 
gl.glFogfv(GL10.GL_FOG_COLOR, new Color(0,0,0,0).toFloatBuffer()); 
gl.glEnable(GL10.GL_FOG); 

Répondre

3

Ceci est le comportement attendu. Le brouillard à fonction fixe dans OpenGL et OpenGL ES ne modifie que les composants R, G et B finaux du fragment. Le composant A reste intact (c'est-à-dire que le composant A de GL_FOG_COLOR n'est pas utilisé).

+0

ok merci, y at-il un moyen d'utiliser cet effet de brouillard en plus sur le canal alpha? Je pourrais le faire moi-même en calculant la distance des objets à la caméra mais j'espérais qu'il serait possible d'utiliser l'effet de brouillard pour cela. –

+0

Pas vraiment, c'est juste comme ça que le comportement est défini dans OpenGL ES 1.1. Essayez-vous de filtrer le contenu arbitraire sur un arrière-plan arbitraire, ou l'ensemble de cas que vous devez gérer est-il plus limité? – Pivot

+0

le premier, im essayant de disparaître le contenu et le brouillard serait exactement ce dont j'ai besoin: / –