Pb avec opengl [Résolu]

Signaler
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
26 juin 2008
-
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
26 juin 2008
-
Bonjour,

Je cherche à réaliser un prog pour étudier les fonctions de deux variables z=f(x,y). Je travaille sous opengl.

Le logiciel doit tracer la surface en rendu 3d avec éclairage (ça c'est fait ça marche nickel) ou les lignes de niveaux de la courbe, en gros les fils de fer qui supportent la courbe (ça c'est fait, ça marche aussi). Quand on affiche l'un sans l'autre c'est parfait.

Mais, lorsque je veux afficher la surface avec les lignes de niveaux dessus on ne voit plus les lignes de niveaux, elles se mélangent à la surface. En clair comment peut-on faire pour effectuer un tracé clair sur la surface sans que ce tracé ne se mélange à la surface et en deviennent illisible ??

Merci à tous les gros bras qui me donneraient une solution.

Toto le windsurfer

8 réponses

Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
26 juin 2008

J'ai finalement trouvé un truc satisfaisant :

    glDepthFunc(GL_LEQUAL);

permet de dissocier la surface des truc qu'ontrace dessus.

merci pour les coups de mains.

cordialement

toto le windsurfer
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonjour

Le plus simple, tu augmentes la taille d'affichage des lignes par un glLineWidth. (Par défaut la valeur est de 1.0; tu peux la mettre à 3.0, 5.0,  etc... selon tes besoins.)

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
26 juin 2008

Merci

mais j'y avais pensé. Quelque soit l'épaisseur des lignes; il y a un mélange de couleur entre la surface 3d et le "tramage" tel que le tramage est super moche , en pointillé, à moitié visible....

Je crois qu'il y a une histoire de décalage de pixel pour dessiner sans mélanger la surface et le tramage mais je ne sais pas comment ça marche. .

toto le windsurfer
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Tu devrais avoir quelquechose du genre :

 glPushAttrib( GL_ALL_ATTRIB_BITS ); 

   // Dessin de ta surface "solide"
   glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
   glLineWidth( 1.0 );
   DessinSurface ; // Procedure qui dessine ta surface

   // Dessin de ta surface "maillage"
   glColor3f(0.0,0.0,0.0);
   glDisable(GL_LIGHTING);
   glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
   glLineWidth( 3.0 );
   DessinSurface ; // Même procedure que précédemment

glPopAttrib();

P.S. Non testé ! De mémoire, alors sans garanties aucune

Cordialement. <hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
26 juin 2008

toto le windsurfer
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Et ?

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
26 juin 2008

Je suis long à répondre, désolé, beaucoup de boulot en milieu de semaine...

Donc : ça ne change pas le rendu. Il y a un toujours un "mélange" entre la surface et les lignes dessus.
J'ai viens de trouver un site (http://helios.univ-reims.fr/Labos/LERI/membre/bittar/03OpenGL/td08.html) où il est question de décalage de pixels pour différencier polygones et lignes .... et ça ne marche pas. La commange glPolygonOffset est donnée comme inconnue.

Je pense ne pas avoir une version complète de la librairie opengl. J'en cherche une meilleure comptatible avec celle que j'utilise.

Si qqun à des infos concerant cette commande pour l'humble débutant que je suis....

merci.

toto le windsurfer
Messages postés
20
Date d'inscription
vendredi 30 janvier 2004
Statut
Membre
Dernière intervention
26 juin 2008