couleur ne dépedant pas des lumieres [openGL] - C++ - Programmation
Marsh Posté le 19-04-2006 à 15:22:11
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
Marsh Posté le 19-04-2006 à 15:27:03
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...
Marsh Posté le 19-04-2006 à 18:35:43
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);
Marsh Posté le 19-04-2006 à 19:25:31
you re welcome
Marsh Posté le 19-04-2006 à 22:47:52
tu peux faire un glDisable(GL_LIGHTING) avant de dessiner ton objet puis un glEnable(GL_LIGHTING) après.
Ca devrait marcher.
Marsh Posté le 19-04-2006 à 23:15:47
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
Marsh Posté le 19-04-2006 à 23:33:56
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
Marsh Posté le 22-04-2006 à 19:06:12
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
Marsh Posté le 22-04-2006 à 21:21:05
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"
Marsh Posté le 19-04-2006 à 14:48:49
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 !