Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 wink (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 lol

iconDefault[(j+i*TAILLE_ICON)*4+3]=255-(unsigned char)pix[3];

Et moi qui cherchait à comprendre pourquoi le canal alpha était inversé tongue

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 wink 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