Pages : 1
#1 Le 22/06/2008, à 16:23
- rniamo
opengl et transparence [Résolu :D]
bonjour,
j'essaye de faire un peu de transparence via des png en opengl mais je n'arrive pas à garder ma couleur :
ce que j'ai : http://pix.nofrag.com/b/4/9/c797bd06...56eec88b4.html
Le code est dispo via les manipulation suivantes :
svn co svn://svn.tuxfamily.org/svnroot/rniamoflow/rniamoflow dossier
cd dossier/trunk
et pour compiler et lancer :
make -j5
./main
Dernière modification par rniamo (Le 23/06/2008, à 22:02)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#2 Le 22/06/2008, à 19:44
- robrob
Re : opengl et transparence [Résolu :D]
Il faut quoi pour compiler ton code?
(j'ai installé libgtkmm-2.4-dev)
Sinon ben pour faire de la transparence tu as 2 solutions:
- définir des textures avec transparence (typiquement du RGBA)
- utiliser des textures sans transparence + définir une couleur avec un canal alpha avec par exemple glcolor4f()
Dans les 2 cas il ne faut pas oublier:
- d'activer la transparence (blending) glEnable()
- de définir la fonction de blending avec glBlendFunc()
Dernière modification par robrob (Le 22/06/2008, à 19:45)
Hors ligne
#3 Le 22/06/2008, à 20:00
- robrob
Re : opengl et transparence [Résolu :D]
Je ne pas tester ton code, mais j'ai une remarque:
Pour la fonction de blending utilise plutôt glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); car avec la tienne tu vas avoir des zones trop claires si le fond n'est pas noir (c'est peut-être voulu ceci dit).
Et une question:
Es tu sur que le pb vient uniquement de la transparence et pas de la manière dont est créée la texture par exemple?
Hors ligne
#4 Le 22/06/2008, à 20:14
- rniamo
Re : opengl et transparence [Résolu :D]
Je l'ai fait mais ça ne suffit pas.
gtkglextmm doit être installé.
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#5 Le 22/06/2008, à 21:35
- robrob
Re : opengl et transparence [Résolu :D]
Arf je n'ai pas ce paquet...tanpis
As tu vérifier que ta méthode d'initialisation de la texture était correcte?
Par exemple, si tu déactives le blending (avec un glDisable(GL_BLEND)), l'affichage est correct?
ps: ton lien pour l'image ne marche pas
Hors ligne
#6 Le 23/06/2008, à 07:31
- rniamo
Re : opengl et transparence [Résolu :D]
si je "disable" le blending, j'ai un affichage "normal" (enfin attendu) mais c'est moche sans transparence.
lien (j'espère qu'il va marcher) : http://pix.nofrag.com/e/6/4/38964b5fc3e … 38f2d.html
edit le paquet qu'il te manque est http://packages.ubuntu.com/fr/source/hardy/gtkglext
Dernière modification par rniamo (Le 23/06/2008, à 07:35)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne
#7 Le 23/06/2008, à 19:18
- robrob
Re : opengl et transparence [Résolu :D]
Pour gtkglextmm je l'ai finalement compilé à partir des sources (je suis sous Feisty).
Au niveau de la transparence, j'ai trouvé comment améliorer le problème:
- au niveau de la fonction de blending, il faut utiliser glBlendFunc(GL_ONE_MINUS_SRC_ALPHA,GL_SRC_ALPHA);
La raison supposée pourrait-être que la valeur du canal alpha du png est inversée par rapport à ce qu'attend l'openGL.
- l'utilisation de glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); fait foirer la transparence (j'ai pas creusé le pb).
- il faut déactiver GL_DEPTH_TEST, car ce n'est pas trop compatible avec le blending (du coup il faut gérer à la main l'ordre d'affichage, des plus lointains au plus proches).
Dernière modification par robrob (Le 23/06/2008, à 19:19)
Hors ligne
#8 Le 23/06/2008, à 19:38
- robrob
Re : opengl et transparence [Résolu :D]
J'avais pas vu ça
iconDefault[(j+i*TAILLE_ICON)*4+3]=255-(unsigned char)pix[3];
Et moi qui cherchait à comprendre pourquoi le canal alpha était inversé
Si on vire cette inversion + on remet la fonction normale de blending glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); c'est beaucoup plus logique.
Dernière modification par robrob (Le 23/06/2008, à 19:38)
Hors ligne
#9 Le 23/06/2008, à 22:02
- rniamo
Re : opengl et transparence [Résolu :D]
P***** !
désolé pour cette entrée mais là, je t'aime robrob !
C'est énorme, j'adore !
Merci mille fois !
Pour le GL_DEPTH_TEST j'ai vu le problème mais pour le moment j'affiche à l'envers (du plus prés au plus loin) donc ce petit problème est normal.
Merci encore !
Je vais enfin pouvoir passer aux choses sérieuses.
Dernière modification par rniamo (Le 23/06/2008, à 22:10)
< Quelques un des mes programmes | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
\ ^__^
\ (o o)\_______
(___)\ )\
Hors ligne