OpenGL; transparence des png assombrie

Résolu
Signaler
Messages postés
9
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
22 septembre 2011
-
Messages postés
9
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
22 septembre 2011
-
Bonjour,

Je me permet de poster dans la section C étant donné que l'OpenGl est peut utilisé avec d'autres langages...

Je suis en train de développer un jeux en objective-c pour iphone et j'ai un soucis de transparence avec mes png. En effet, la transparence de ceux-ci est assombrie :


Voici le code d'affichage des images :
glPushMatrix();

glTranslatef(point.x, point.y, 0);
glRotatef(-rotation, 0.0f, 0.0f, 1.0f);
glTranslatef(-point.x, -point.y, 0);

glColor4f(colourFilter[0], colourFilter[1], colourFilter[2], colourFilter[3]);

glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glEnable(GL_TEXTURE_2D);

if([texture name] != appDelegate.currentTexture) {
[appDelegate setCurrentTexture:[texture name]];
glBindTexture(GL_TEXTURE_2D, [texture name]);
}

glVertexPointer(2, GL_FLOAT, 0, qv);

glTexCoordPointer(2, GL_FLOAT, 0, tc);

glEnable(GL_BLEND);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);

glPopMatrix();


Je n'y connais pas grand chose en OpenGl; j'ai déjà pas mal cherché, je pense que mon soucis viens de mon gl_blend, dans l'état sans glBlendFunc.

Merci d'avance pour vos réponses!

5 réponses

Messages postés
416
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
Bonsoir Choucroute,
Je ne sais pas si j'ai la solution mais
chez moi cette fonction est comme ceci

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

(je travaille en vb.net mais le langage opengl est le même)
Voici 2 liens qui te seront utiles:

Forum
Texture transparency converting from Bitmap

Regarde peut être aussi du coté du chargement des photos dans OpenGl:
fonction : GlTexImage2D

Bonne soirée CGSI3
Messages postés
416
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
Bonjour,
Quelques pistes : (Je suis également un novice en ce domaine)

glColor4f
As tu essayé de changer les valeurs ou de mettre cette ligne en Commentaire ?

Une chose m'intrigue, ton 2 eme glTranslatef est il bien placé ?
- Tu place ton objet (translation, Rotation)
- Tu le dessine
- Tu reviens a l'origine ( Pas sur de l'utilitée de cette dernière ligne, car il me semble que glPopMatrix le fait)

Bonne Prog CGSI3
Messages postés
9
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
22 septembre 2011

Salut,

Merci pour tas réponse.

Rien à faire avec glColor4f.
Pour glTranslatef si je le déplace ou le supprime ça me met un beau bazar...

J'ai pas mal cherché du côté de glBlendFunc, et j'ai fini par rajouter un paramètre à ma fonction :
if(lightTransparency) glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR);


Ca ne me semble pas très propre comme solution, non?

++
Messages postés
416
Date d'inscription
vendredi 22 février 2008
Statut
Membre
Dernière intervention
7 janvier 2018
1
En complément 2 Liens:

Lien
Click droit et Traduction avec LiveSearch

Lien

Tu devrais trouver la solution de ton Pb dans tout ceci.
Par contre je persiste a penser que le 2eme GlTranslated est mal placé,
tous les exemples que je possède vont dans le même sens.

Bonne soirée CGSI3
Messages postés
9
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
22 septembre 2011

Bonjour,

Merci CGSI3 pour ton aide!
J'ai bricolé et réussi à faire ce que je voulais...

Par défaut mon glBlendFunc est le même :
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

GlTranslated est peut-être mal placé, de mon côté ça fonctionne; vu mon niveau en opengl, je ne pourrai te donner la lumière sur ce mystère. :p


Salutations