IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Glut/glui


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut Glut/glui
    Salut à tous,
    Je développe une interface graphique opengl dans le cadre d'un projet de simulation.
    Je veux dessiner différents points sur une console mais avec différentes couleurs.
    Pour les couleurs c'est OK, mais ils ont tous la même couleur.

    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de Happy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2005
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Autre

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2005
    Messages : 665
    Par défaut
    Salut,

    Normallement pour chaque vertex/point, on dois mettre une couleur .. sinon il utiliseras la derniere couleur assignée auparavant..

    edit: Mais plusieurs couleurs sur un seul point, je pense pas que ca sois possible

  3. #3
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Salut,

    en fait pour la couleur des points ce n'est pas plusieurs couleurs par point mais plutot une seule couleur.
    Mon objectif étant de dessiner des points avec la couleur rouge et d'autre avec du blanc par exemple.

    Voici le code :

    if (displayMachine)
    glBegin (GL_POINTS);
    for (temp = ihm->head; temp != NULL; temp = temp->np)
    glVertex2f (temp->x, temp->y);
    glEnd ();
    // myGlutDisplay the number of a point
    if (displayMachineNum)
    for (temp = ihm->head; temp != NULL; temp = temp->np)
    ihm->printw (temp->x - (world_width/ (6.0 * window_width)),
    temp->y + (world_height/ window_height) * 15,
    "%d", temp->point_num);
    //
    // temp est mon point et

  4. #4
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 817
    Par défaut
    Salut,

    Citation Envoyé par abdoulzak
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	glBegin (GL_POINTS);
    	for (temp = ihm->head; temp != NULL; temp = temp->np)
    	glVertex2f (temp->x, temp->y);
    	glEnd ();
    Euh... où est-ce que tu changes la couleur de tes points?
    Il n'y a pas d'instruction de changement de couleur dans ta boucle là...

    PS: utilise les balise [ code ] et [ /code] pour afficher tes listings
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  5. #5
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    pour changer la couleur un petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    glColor3f(1.0f,0.0f,0.0f);
    pour passer en rouge devant ton glBegin() (si tu veut que tout les points du glBegin/glEnd soit rouge) ou devant chaque glVertex() (pour changer la couleur de chaque point) devrait suffire
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  6. #6
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Salut,

    Je vous envoie le code pour y voir un peux plus claire :

    d'abord ma fonction display()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    void myGlutDisplay ()
    {
    	Point *temp;
     
    	//  Clear the frame buffer...
    	glClear( GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
     
     
    	glColor3fv (color);
     
    	float pointSize = 0;
    	glGetFloatv(GL_POINT_SIZE, &pointSize);
     
    	//  myGlutDisplay results depending on the mode
    	glBegin (mode);
    	for (temp = ihm->head; temp != NULL; temp = temp->np)
    		glVertex2f (temp->x, temp->y);
    	glEnd ();
     
    	//  Set the color of points to green
    	glColor3f (0.0,255.0,0.0);
     
    	//  myGlutDisplay points
    	if (displayMachine)
    		glBegin (GL_POINTS);
    	for (temp = ihm->head; temp != NULL; temp = temp->np)
    		glVertex2f (temp->x, temp->y);
    	glEnd ();
     
    	//  myGlutDisplay the number of a point
    	if (displayMachineNum)
    		for (temp = ihm->head; temp != NULL; temp = temp->np)
    		ihm->printw (temp->x - (world_width/ (6.0 * window_width)), 
    			temp->y + (world_height/ window_height) * 15, 
    			"%d", temp->point_num);
     
    		//  Swap buffers
    		glutSwapBuffers ();
    }
    puis la fonction printw()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    printw(GLfloat x, GLfloat y, char* format, ...)
    {
      GLvoid *font_style = GLUT_BITMAP_TIMES_ROMAN_10;
        va_list arg_list;
        char str[256];
    	int i;
     
        va_start(arg_list, format);
        vsprintf(str, format, arg_list);
        va_end(arg_list);
     
        glRasterPos2f (x, y);
     
        for (i = 0; str[i] != '\0'; i++)
            glutBitmapCharacter(font_style, str[i]);
    }
    Merci .

  7. #7
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    mmmmh erreur la :
    glColor3f (0.0,255.0,0.0);
    il ne faut pas mettre 255 mais 1.0f
    le glColor3f prend des valeures comprisent dans [0..1], si tu veut utiliser des valeures de 0 a 255 il faut utiliser glColor3ub.
    sinon je suppose que tout tes points sont affichée en vert ?
    car tu ne fait pas de glColor*() avant ta premiere boucle for() donc il garde la derniere couleure passée a openGL qui est le vert...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

  8. #8
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 11
    Par défaut
    Effectivement tout les points étaint en vert , mais actuellement j'arrive a colorier mais les points précedents se colorient également avec la meme couleur, meme si je definie le glColor à utiliser.

  9. #9
    Rédacteur
    Avatar de bafman
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    2 574
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2003
    Messages : 2 574
    Par défaut
    normale car tu a une boucle d'affichage... donc les point qui sont precedent a la boucle N se retrouvent suivre les autres a la boucle N+1... les etats openGL sont conservé d'un swap buffer a l'autre...
    * Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
    * pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
    Mes articles

Discussions similaires

  1. Que penser de l'avenir de glut??
    Par xg dans le forum GLUT
    Réponses: 4
    Dernier message: 06/02/2004, 13h12
  2. [Outils][C++] GLUT, GTKGL, ... : Que choisir ?
    Par Fëanor13 dans le forum GLUT
    Réponses: 8
    Dernier message: 28/12/2003, 11h44
  3. OpenGL, GLut... comment?
    Par big_gie dans le forum GLUT
    Réponses: 2
    Dernier message: 16/07/2003, 11h25
  4. Tore en OpenGL sans utiliser glut
    Par lefort dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 20/11/2002, 16h32
  5. Configurer OpenGL/Glut avec C++Bluider
    Par MiGoN dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/09/2002, 23h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo