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

  FORUM HardWare.fr
  Programmation
  C++

  [C++] OpenGL : Normales dans un GL_TRIANGLE_STRIP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] OpenGL : Normales dans un GL_TRIANGLE_STRIP

n°1293983
stan walke​r
Yeahhhhhhhhhhh
Posté le 28-01-2006 à 14:32:24  profilanswer
 

Bonjour.
 
J'aimerais savoir quand définir les normales des points lorsque l'on créer un GL_TRIANGLE_STRIP
 
Pour expliquer mon problème : un petit exemple. Je veux afficher une page plié en 2 (genre livre à motié ouvert), les 2 parties de la pages formant les plan (Ox, Oz) et (Oy, Oz). Le code donne quelque chose dans le genre :
 

Code :
  1. glBegin(GL_TRIANGLE_STRIP);
  2. glVertex3d(1,0,0);
  3. glVertex3d(1,0,1);
  4. glVertex3d(0,0,0);
  5. glVertex3d(0,0,1);
  6. glVertex3d(0,1,0);
  7. glVertex3d(0,1,1);
  8. glEnd();


 
J'ai donc 2 normales à définir (pour chacun des 2 cotés) : glNormal3d(0,1,0) et glNormal3d(1,0,0). Où dois-je les placer ?
 
car les points (0,0,0) et (0,0,1) sont des points "charnieres", qui n'ont pas vraiment de normale, appartenant au 2 coté de la page en même temps (désolé si ce n'est pas clair, je fais du mieu que je peux promis  :pt1cable: )
 
Merci d'avance.
 
 
PS HS : c'est dommage qu'il n'y est pas un partie spécifique à l'openGL (je sais ce n'est pas un langage mais ca pose quand même des problèmes spécifiques), j'hésite toujours entre poster ici ou chez "graphisme", vu qu'il y a des posts pour OpenGL dans les 2...

mood
Publicité
Posté le 28-01-2006 à 14:32:24  profilanswer
 

n°1294006
zbouirf
poukram et dre dans le pentu
Posté le 28-01-2006 à 15:19:32  profilanswer
 

Salut Stan,
 
Cela dépend de l'aspect que tu veux donner à ton angle : lissé ou marqué.
 

  • aspect lissé

Utilise comme normale pour les vertex (0,0,0) et (0,0,1) la moyenne des 2 autres normales : glNormal3d (1,1,0).

Code :
  1. glBegin (GL_TRIANGLE_STRIP);
  2. glNormal3d (0,1,0);
  3. glVertex3d (1,0,0);
  4. glVertex3d (1,0,1);
  5. glNormal3d (1,1,0);
  6. glVertex3d (0,0,0);
  7. glVertex3d (0,0,1);
  8. glNormal3d (1,0,0);
  9. glVertex3d (0,1,0);
  10. glVertex3d (0,1,1);
  11. glEnd ();


  • aspect marqué

Utilise deux triangle_strip, un pour le côté (Ox, Oz) et un autre pour le côté (Oy, Oz). Dans chacun des cas, utilise pour tous les points de la face, la même normale. L'inconvénient de procéder ainsi, est la duplication des points de l'angle entre les deux surfaces...

Code :
  1. glBegin (GL_TRIANGLE_STRIP);
  2. glNormal3d (0,1,0);
  3. glVertex3d (1,0,0);
  4. glVertex3d (1,0,1);
  5. glVertex3d (0,0,0);
  6. glVertex3d (0,0,1);
  7. glEnd ();
  8. glBegin (GL_TRIANGLE_STRIP);
  9. glNormal3d (1,0,0);
  10. glVertex3d (0,0,0);
  11. glVertex3d (0,0,1);
  12. glVertex3d (0,1,0);
  13. glVertex3d (0,1,1);
  14. glEnd();


 
Voila, j'éspère que ceci répondra à ta question...

n°1294043
stan walke​r
Yeahhhhhhhhhhh
Posté le 28-01-2006 à 17:50:41  profilanswer
 

ok merci zbouirf, en effet c'est dommage que l'ont doivent utiliser deux séquences de begin ... end pour l'aspect marqué, mais après tout ca semble logique...


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

  [C++] OpenGL : Normales dans un GL_TRIANGLE_STRIP

 

Sujets relatifs
Visual Basic et openGL , ca s'aime ???Opengl - glitches
(delphi) implementer un fond avec opengl en utilisant glfwtriangle et variable globales... Help!!!
[OpenGL] Creer un menuOpenGL : problème de Flou sur les images
recherche Programmeur C++/DirectX/OpenGL - Son Of Destiny - RPG 2D/3DopenGL et C++
Insérer une image 2D avec OpenGL ???Insérer image avec GLFW (OpenGL......) ????
Plus de sujets relatifs à : [C++] OpenGL : Normales dans un GL_TRIANGLE_STRIP


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