begin process at 2012 02 10 10:59:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

OpenGL : Couleur Transparente (composante alpha)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

OpenGL : Couleur Transparente (composante alpha)

mardi 12 avril 2005 à 17:29:11 | OpenGL : Couleur Transparente (composante alpha)

smoove5198

Bonjour,

Je fait de l'affichage 3D avec opengl et je souhaite utiliser le principe de couleur transparente. Apres m'etre un peu renseigné j'ai appris à charger et a afficher une image tga en definissant la couleur qui ne devra pas etre affichée par opengl grace à la valeur alpha que gere le format tga. Jusque la pas de probleme ca marche, mais je me suis rendu compte un peu plus tard qu'en réalité la couleur qui n'est pas visible est remplacée par un noir opaque ... autrement dit ce n'est pas ce que j'esperai puisque meme si la couleur ne se voit pas elle reste masquante pour ce qui se trouve derriere :s

Au cas ou le probleme vienne de ma methode pour charger ma texture, voila comment je procède :

1 - Je lis le header du fichier tga
2 - Je lis le fichier ( je vous passe les details .. fread tout ca ^^ )
3- Si le header me dit que le fichier est en 32 bits par pixels je charge ma texture avec la fonction suivante :
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Width, Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, ImageData);

( le GL_RGBA car je suis en 32 bpp et que je veux gerer la composante alpha de la couleur)

Voila, je suis un peu dans le flou et tres decu car je croyais avoir enfin réussi :'( donc j'espere que vous pourrez m'aider.

Merci d'avance =)

Smoove
mardi 12 avril 2005 à 19:47:03 | Re : OpenGL : Couleur Transparente (composante alpha)

KeniiyK

Membre Club
Réponse acceptée !

Salut, tu veux afficher en transparence ou faire des trous.... ?

Si c'est de la transparence faut faire du blending, si c'est des trous alors Alpha.

Pour le blend :
glEnable(GL_BLEND);
glBlendFunc(... , ...);

Pour l'alpha :
glEnable(GL_ALPHA_TEST);
glAlphaFunc(... , ...);

Au sinon, apparement tu charges bien ta texture...

@+, KeniiyK
mardi 12 avril 2005 à 21:05:56 | Re : OpenGL : Couleur Transparente (composante alpha)

smoove5198

Hm oui pardon je me suis peu etre mal expliqué,

C la deuxieme solution qui m'interesse : faire des "trous" , mais la methode que tu me donne ( AlphaFunc (...) ) n'as pas l'air de fonctionner :s

Je vais donner un exemple pour etre sur de bien me faire comprendre :

lorsqu'on veux afficher le sprite d'un personnage on utilise une image rectangulaire du personnage (pas d'autre choix). Toutes les parties qui ne sont pas le dessin du personnage sont peintes en rouge flachi par exemple (255,0,255) et avec l'alpha il doit etre possible de faire en sorte que ces parties ne soit pas visible, c'est a dire qu'elle ne masque surtout pas le decor autour. Au bout du compte on ne vois plus les contour de l'image mais juste le personnage.

Dans mon projet avec la methode que j'ai citée ( j'ai verifié que j'avais bien mis glEnable(GL_ALPHA_TEST) et glAlphaFunc( ..)  ) la couleur que je definit comme ne devant pas etre visible est transformée en noir qui lui est bien visible et masque le decor.

Conclusion je comprend pas du tout ce qui cloche :s

Smoove
mardi 12 avril 2005 à 21:07:22 | Re : OpenGL : Couleur Transparente (composante alpha)

smoove5198

Hm oui pardon je me suis peu etre mal expliqué,

C la deuxieme solution qui m'interesse : faire des "trous" , mais la methode que tu me donne ( AlphaFunc (...) ) n'as pas l'air de fonctionner :s

Je vais donner un exemple pour etre sur de bien me faire comprendre :

lorsqu'on veux afficher le sprite d'un personnage on utilise une image rectangulaire du personnage (pas d'autre choix). Toutes les parties qui ne sont pas le dessin du personnage sont peintes en rouge flachi par exemple (255,0,255) et avec l'alpha il doit etre possible de faire en sorte que ces parties ne soit pas visible, c'est a dire qu'elle ne masque surtout pas le decor autour. Au bout du compte on ne vois plus les contour de l'image mais juste le personnage.

Dans mon projet avec la methode que j'ai citée ( j'ai verifié que j'avais bien mis glEnable(GL_ALPHA_TEST) et glAlphaFunc( ..)  ) la couleur que je definit comme ne devant pas etre visible est transformée en noir qui lui est bien visible et masque le decor.

Conclusion je comprend pas du tout ce qui cloche :s

Smoove
mardi 12 avril 2005 à 21:09:33 | Re : OpenGL : Couleur Transparente (composante alpha)

smoove5198

oula dsl pour le double post :x

Smoove
mercredi 13 avril 2005 à 18:29:02 | Re : OpenGL : Couleur Transparente (composante alpha)

KeniiyK

Membre Club

Si j'ai bien compris tu veux que la composante Rouge de l'image représente la couche Alpha.
Alors il faut que tu travailles en RGBA et en chargeant ton image (en RGB si j'ai bien compris) il faut que tu changes les pixels en RGBA donc pour un pixel faire :
pixelImage(R,G,B) -> pixelTexture(X,G,B,R); X la couleur rouge que tu veux quand il n'y a pas de "trou".

Mais le mieux serai que l'image contienne directement le plan Alpha donc qu'elle soit en RGBA, comme ca tu loade et tu t'occupes de rien...


@+, KeniiyK


Cette discussion est classée dans : couleur, opengl, alpha, gl, transparente


Répondre à ce message

Sujets en rapport avec ce message

lire la couleur d'un point d'une texture opengl [ par kawito ] Bonjour,j'ai crée des texture opengl a partir de fichier TGA.une fois les textures crées comment puis je reccuperer les information d'un pixel de la t allegro [ par mat74 ] salut a ts ,avec allegro la couleur transparente est le violet . cad que si on met du violet ds un dessin il n'apparait pas a l'écran . j'ai merai sav Opengl et DevIL [ par xarier ] Hi everybody ma questipon est la suivante: comment faire ca avec devil [ pour le dernier parametre ]glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]- couleur d'un point [ par toto000 ] Bonjour,Y a-t-il une fonction en OpenGL qui permet de verifier la couleur d'un point dont on connait les coordonnes en x, y et z dans la fenetre Openg Couleur et texture en opengl [ par smoove5198 ] bonjour, je suis un peu newbie en opengl et je n'ai toujours pas bien compris comment faire pour colorer les objets qu'on affiche sans que cela influ Direct X ou OpenGL? [ par o0Leo0o ] Bonjour, je ne sais vraiment pas par quoi commencer, étudier Direct X ou Open GL?En fait, il me semble que Open GL est plus puissant et peut-être supp OpenGL [ par xarier ] SALUT TOUT le monde j'ai un prob que je comprend pas bienquand je met ce code :gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, ilGetInteger(IL_IMAGE_WIDTH), openGL : scintillement [ par dletozeun ] bonjour,Je debute avec l'openGL en c++ et je n'utilise pas glut.En fait mon prog dessine des lignes blanches dans une fenetre mais les lignes ne s'afi algorithme d'un cercle avec opengl [ par jfk20004 ] quelqu'un peut il me donner le code d'un algo d'un tracé de cercleutilisant opengl. Par exx=r*cos(alpha)+cos(beta);y=r*sin(alpha)+cos(beta);j'imagine OpenGL probleme avec gl.h et mingw32 [ par EricLeRouge ] J'ai cree un fichier simple en C, ou il y a juste la fonction main , et l'inclusion de gl.h.Lorsque je compile avec mingw32, il me sort 1 erreur :in f


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,513 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales