bonjour,
je n'ai pas bien saisi si pour utiliser l'alpha dans des texture 2D (png) il faut l'activer ou pas (GL_RGBA suffit ou il faut en plus glEnable(GL_ALPHA_TEST) )?
bonjour,
je n'ai pas bien saisi si pour utiliser l'alpha dans des texture 2D (png) il faut l'activer ou pas (GL_RGBA suffit ou il faut en plus glEnable(GL_ALPHA_TEST) )?
Donc a priori il suffit de spécifier gl_rgba dans glteximage2D. Mais je n'ai pas la transparence.
Ma création de texture se fait comme ça :
J'ai bien sûr vérifier que mon image à une couche alpha.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 glBindTexture (GL_TEXTURE_2D,texDefault[GLScene::FICHIER]); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,TAILLE_ICON,TAILLE_ICON,0,GL_RGBA,GL_UNSIGNED_BYTE,this->iconDefaultFichier);
Au final j'ai mon image normale mais sans couche alpha.
As tu bien lu le tuto ?
Car il parle aussi de :
... mais aussi d'ordre de rendu ... et d'incompatibilité avec le depthbuffer..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 glBlendFunc(GL_SRC_ALPHA,GL_ONE); glEnable(GL_BLEND); etc....
Je te conseille de bien le lire et de bien le comprendre
pourquoi on désactive le test de profondeur (ce n'est pas possible de le faire sans trier les polygon ?) quand on veut utiliser GL_BLEND ?
Et GL_BLEND me fait un truc assez moche , comme si il tracer les contour de mes faces de polygons
edit : [HS]Je croise sur le net des versions de code qui utilisent une syntaxe du type : gl.glFonction(), c'est quoi ? Je n'avais pas vu de version objet quand j'avais cherché . [/HS]
Le problème avec le depthbuffer viens surtout que les faces qui sont derrière ta face transparente ne seront pas rendues.
Je te conseille de regarder les différents paramètres de glBlendFunc pour bien comprendre sont fonctionnement.
En fait vu que j'ai besoin de la transparence sur tous mes plans je ne voit pas comment faire...
gl_blend me donne pour le moment quelquechose de trés clair et mon alpha n'est pas reconnu (j'ai du blanc à la place)
edit : le problème vient apperemment de ma texture : j'ai 4 couche et je récupère les valeur rgba directement, faut-il faire quelquechose sur la couche alpha (la ramener entre 0 et 1 par exemple ?)
j'utilise glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); et mes couleurs sont trés trés clair (presque toutes blanches).
Pour la transparence j'ai inversé ma couche alpha et ça a l'air de marcher.
je pense que ma fonction de glBlend est mauvaise mais je ne vois pas laquelle mettre.
edit : voilà ce que j'ai :
http://pix.nofrag.com/b/4/9/c797bd06...56eec88b4.html
Les images a droite (opengl) sont les même que celles de gauche (gtkmm)
j'ai l'impression d'avoir compris les attributs de glBlendFunc mais il y a une problème (donc je n'ai pas dû comprendre) :
si j'ai plein d'objets transparents, si je fais toujours des sommes, j'aurais forcément des points blancs au final ... donc pas vraiment de transparence, non ? (enfin c'est ce qui a l'air de se passer pour moi)
edit : j'aimerais une confirmation concernant la couche alpha : transparent =0 ou 255 (pour la texture) ?
Tutoriels OpenGL
Je ne répondrai à aucune question en MP
- Si c'est simple tu dis que c'est compliqué et tu le fait
- Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.
Partager