Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1621 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [openGL] couleur ne dépedant pas des lumieres

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[openGL] couleur ne dépedant pas des lumieres

n°1349687
Fa7
Posté le 19-04-2006 à 14:48:49  profilanswer
 

Salut !

 

Comment faire, en openGL, pour donner une couleur à un objet qui ne dépende pas de l'éclairage ?
En fait, j'ai un controle affiché au premier plan, mais sa couleur chage quand je bouge dans la scene, a cause des lumiere présentes..
Ce que j'ai fait c'est de lui mettre une couleur en GL_EMISSION, mais je pense qu'il y a une autre methode plus propre...

 


Merci !

mood
Publicité
Posté le 19-04-2006 à 14:48:49  profilanswer
 

n°1349745
icareo
Posté le 19-04-2006 à 15:22:11  profilanswer
 

Plus propre ? mais ... c'est propre, non :) ?  
GL_EMISSION est fait pour ca non ?
 
GL_EMISSION à la couleur que tu veux
GL_DIFFUSE, GL_AMBIANT etc à zéro :/


---------------
tutos de programmation 3D :
n°1349750
Fa7
Posté le 19-04-2006 à 15:27:03  profilanswer
 

Ouai, le truc c'est que je suis obligé de remettre le GL_EMISSION à sa valeur par défaut apres... sinon tous les objets émettent et c'est pas vraiment beau ca !!
c'est pour ca que je trouvais que ca faisait un peu bidouille...
 
 

n°1349983
icareo
Posté le 19-04-2006 à 18:35:43  profilanswer
 

Dans ce cas, tu crée une classe toute propre...
 
class glOperation
{
__glOperation();
__~glOperation();
__void setDiffuse();
__void setSpecular();
__void drawPolygon(ptr);
 ou que sais-je encore..
}
 
qui dans le destructeur ~glOperations() remet openGL à ses valeurs par défaut.... c'est ce que je fais dans mon moteur3D...
 
dans ton code, ca donera donc :
 
glOperations op;
op.setSpecular( valeurs ... );
for ...............
__op.drawPolygon();
 
et dès que tu sortiras de ton bloc d'instruction, ou fonction, la classe sera supprimée, et les paramètres d'openGL reviendront tous comme ils étaient en entrant (si ta classe est bien codée)
 
En utilisant cette methode, tu évites facilement qu'une portion de code influence les autres....
 
Si tu utilises cette methode, je te conseilles de jeter un coup d'oeuil sur
glIsEnabled( GLenum );
 
^^ ensuite tu stockes ttes les variables d'ogl ds ta classe, et tu les rétablis à la destruction de la classe.
ex :
 
bool tex2d = glIsEnabled( GL_TEXTURE_2D );
 
// code......;
 
if( tex2d )
 glEnable(GL_TEXTURE_2D);
else
 glDisable(GL_TEXTURE_2D);


---------------
tutos de programmation 3D :
n°1349997
Fa7
Posté le 19-04-2006 à 18:50:58  profilanswer
 

Yess !! merci beaucoup !! C'est une super idée !!

n°1350016
icareo
Posté le 19-04-2006 à 19:25:31  profilanswer
 

you re welcome


---------------
tutos de programmation 3D :
n°1350117
SquiZZ
Posté le 19-04-2006 à 22:47:52  profilanswer
 

tu peux faire un glDisable(GL_LIGHTING) avant de dessiner ton objet puis un glEnable(GL_LIGHTING) après.
Ca devrait marcher.

n°1350128
flipz137
mina wa baka desu !
Posté le 19-04-2006 à 23:15:47  profilanswer
 

Si tes faces n'ont pas de texture, tu associe à chaques vertices une couleur (~diffuse) lors de la création de ta face. Pas necessaire de changer les propriétées du materiaux.
 
 
glBegin(GL_TRIANGLES);
glColor4f(0,0,1,1); (r,g,b,alpha)
glVertex3f(x,y,z);
 
 
etc

n°1350141
icareo
Posté le 19-04-2006 à 23:33:56  profilanswer
 

pour flipz137, ta solution marche pas si la couleur diffuse est pas le blanc, car les composantes des lumières dues au lighting viendront s'ajouter à la couleur diffuse.
 
pour squiZZ, wep, ca, ca devrait marcher, j'y avais pas pensé ^^ bienvu


Message édité par icareo le 19-04-2006 à 23:38:48

---------------
tutos de programmation 3D :
n°1351934
pit-shoe04
Posté le 22-04-2006 à 19:06:12  profilanswer
 

Salut en faite j'ai une question :
 
Je suis new dans le c++ j'ai essayer de faire un Gl mais comment fais ton pour supprimer le bouton " fermer " sur la fenetre et qand le clike droit aussi !! Quelqun peut m'aider

mood
Publicité
Posté le 22-04-2006 à 19:06:12  profilanswer
 

n°1351992
icareo
Posté le 22-04-2006 à 21:21:05  profilanswer
 

Le bouton "fermer"... tu veux dire celui de la fenetre windows ? je ne vois pas le rapport avec openGL.
 
Si tu veux des réponses, expliques toi bien, et surtout, crée un nouveau sujet avec un titre explicite du genre "windows.h - 'empecher' fermeture fenetre" ;)


---------------
tutos de programmation 3D :

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [openGL] couleur ne dépedant pas des lumieres

 

Sujets relatifs
Changer la couleur d'un JScrollPaneOpenGL -> multitexturing -> blend problem
Comment donner une couleur seulement à une case du StringGridCouleur... Element... Imbrication... Hum vous avez dis bordel?? lol
Modifier la couleur d'une JCheckBoxVos avis: mon jeu amateur Sonic 3D ( moteur perso OpenGL )
juste UN lien de couleur[OpenGL] animation camera
localiser une cellule dont la couleur est rouge[openGL]: passage coordonnées camera -> globales
Plus de sujets relatifs à : [openGL] couleur ne dépedant pas des lumieres


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR