begin process at 2012 05 30 13:01:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

OpenGL

 > 

Texture transparente


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

Texture transparente

samedi 22 septembre 2007 à 11:29:50 | Texture transparente

F0ra

Bonjour,
Je voudrais afficher une texture avec un font noir transparent.
Le noir est bien transparent, cependant les autres couleurs sont aussi transparentes.
J'ai essayée avec glColor3f, ça ne donne rien. Et je ne sais pas ou le placer.


Il y a-t-il une solution pour que le noir soit juste transparent et non les autres couleurs.
Merci beaucoup.
@+

 


void test(int Texture,float X0,float Y0,float X1,float Y1, float Z0)
{
glDisable(GL_DEPTH_TEST);
glPushMatrix();
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, g_Texture[Texture]);

glLoadIdentity();

glBlendFunc(GL_SRC_ALPHA ,GL_ONE); 
 
glBegin(GL_QUADS);  
glTexCoord2f(1.0f, 0.0f); glVertex3f(X1, Y1,  Z0);
glTexCoord2f(1.0f, 1.0f); glVertex3f(X1, Y0,  Z0);
glTexCoord2f(0.0f, 1.0f); glVertex3f(X0, Y0,  Z0);
glTexCoord2f(0.0f, 0.0f); glVertex3f(X0, Y1,  Z0);
glEnd();
   
glDisable(GL_BLEND);
glPopMatrix();
}

dimanche 23 septembre 2007 à 00:44:10 | Re : Texture transparente

luhtor

Faut que tu utilises une texture avec une couche alpha.
dimanche 23 septembre 2007 à 01:18:20 | Re : Texture transparente

F0ra

Bonjour,
Ça ne m'aide pas beaucoup, j'aurai pu le dire aussi.
Deplus, j'utilise déjà une texture avec une couche alpha dans le code.
@+

dimanche 23 septembre 2007 à 11:10:33 | Re : Texture transparente

luhtor

Bon alors je précise un peu. Avec un logiciel comme The Gimp, tu remplaces le noir, par  du transparent.

Sous The Gimp 2.2, ca se fait de la facon suivant: tu ouvres ta texture, tu fais "Selection par couleur", tu cliques sur le noir. Tu fais ensuite, "Calque -> Masque -> Ajouter un Masque de Calque -> A partir de la sélection" et tu cliques aussi sur "inverser le masque" puis ensuite "Calque -> Masque -> Appliquer le masque". Et la tu obtiens la meme texture, sauf que tout le noir est remplacé par du transparent.

Faut bien sur utiliser un format qui permet la sauvegarde de la couche alpha. Le format tga par exemple, a de nombreux loader gratuit sur le net et notamment sur ce site qui permettent facilement de charger une image.
dimanche 23 septembre 2007 à 12:01:57 | Re : Texture transparente

F0ra

Re,
Je l'avais déjà fais ceci, regard bien en haut :
"Le noir est bien transparent, cependant les autres couleurs sont aussi transparentes. "

 J'aurais dû écrire:
Le noir est complètement transparent (invisible) à 100%.
Sauf que les autres couleurs sont non opaque. On voit les couleurs qui se mélangent avec l'autre texture de fond.

Mon problème ne vient pas de la texture, mais du code source.
Merci quand même.
@+

dimanche 23 septembre 2007 à 13:29:49 | Re : Texture transparente

luhtor

glBlendFunc(GL_SRC_ALPHA ,GL_ONE_MINUS_SRC_ALPHA);


dimanche 23 septembre 2007 à 15:37:55 | Re : Texture transparente

F0ra

mdr,

C'est qu'il y a déjà dans mon code.

dimanche 23 septembre 2007 à 15:44:52 | Re : Texture transparente

luhtor

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, g_Texture[Texture]);

glLoadIdentity();

glBlendFunc(GL_SRC_ALPHA ,GL_ONE);  <=== ah bon ?




dimanche 23 septembre 2007 à 16:18:46 | Re : Texture transparente

F0ra

Si, je supprime : glBlendFunc(GL_SRC_ALPHA ,GL_ONE);
Le  noir n'est plus transparent.
Et si je le remplace par :
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Le  noir n'est plus transparent aussi.

...
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); <-- celui est indispensable
glBindTexture(GL_TEXTURE_2D, g_Texture[Texture]);
...
J'aurai besoin d'un tutorial, mais je n'en trouve pas.

dimanche 23 septembre 2007 à 16:29:36 | Re : Texture transparente

luhtor

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); <-- celui est indispensable

Je suis bien d'accord, celui la est indispensable, l'autre absolument pas. Cette fonction définie simplement comment calculer la valeur de la transparence du pixel actuellement dans le frameBuffer et le pixel en cours de calcul.

Avec cette version, si ton pixel est noir, normalement sa transparence vaut 0, donc la couleur finale sera la couleur du pixel actuellement dans le frameBuffer: la couleur ne sera donc pas modifié, c'est ce que tu veux.

Si ca ne marche pas, c'est ton fichier image qui n'est pas correct, ou ton chargement de texture qui est mauvais. Post ici la partie du code qui charge ton image depuis le disque dur vers la mémoire video.


Cette discussion est classée dans : gl, float, texture, 0f, z0


Répondre à ce message

Sujets en rapport avec ce message

Texture d'une glutSphere [ par Dante41 ] Salut à tous, J'ai besoin de votre aide. j'essaie de recréer le système solaire en OpenGL par conséquent , il faut que je fasse toutes les planètes av Multi-texturing [ par barraq ] Voila j'affiche ma scene avec cette fonction : void Terrain::Draw(VObject *CurrentObject) {     int  g_DetailScale = 128;     //Texture 0     glActi Probleme d'alpha avec SDL_ttf [ par vladisback ] Je suis entrain de m'arracher les cheuveux avec SDL_ttf, j'essai simplement d'afficher du texte de n'importe quelle couleur opaque sur un fond transpa PB POUR LA GESTION MULTIFENETRES [ par algeros ] Voici un code ://////////////////////////////////////////////////////////////////                                                          //   Name: Problème de placage de texture [ par unrealgun ] Bonjour,Je suis en train de développer uGUI en C++ sous linux avec SDL et OpenGL.Voila mon probleme : je charge une image PNG transparente avec SDL_Im transparence en OpenGl [ par F0ra ] Bonjour, J'ai un problème en OpenGl Je voudrais rendre uniquement la couleur rose< [OpenGL] rotation [ par F0ra ] Bonjour,J'ai un problème pour réaliser une rotation en OpenGL au centre du rectangle.J'ai esayé avec glRotatef(ang,0.0,0.0,1.0);  le problème l'origni QT sous Visual C++ 2008 : SOUS XP [ par controlleur ] Bonjour j'ai rencontré une erreur l'or de l'exécution de mon programme : l'erreur c'est qu'il me dise que les QComboBox et QSlider que j'ai déclar OpenGL; transparence des png assombrie [ par choucroute987 ] 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,967 sec (4)

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