1. #1
    Membre actif
    Avatar de cpp_qt_progmane
    Homme Profil pro
    sans Emploi
    Inscrit en
    décembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : sans Emploi

    Informations forums :
    Inscription : décembre 2007
    Messages : 193
    Points : 280
    Points
    280

    Par défaut OpenGL, GLUT : dessin d'un losange

    Bonjour,

    voici ma contribution un dessin d'un losange en jaune dégradé écrit avec des instructions GLUT et OpenGL.
    ce programme à été compilé avec le compilateur GCC sous un système linux
    gnome 3 Ubuntu 12.04.
    Les programmes utilisés sont :
    - l'éditeur de texte Gedit
    - le Terminal (émulateur)

    glutlosange.c
    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
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <GL/glut.h>
     
    void display()
    { glClearColor(0, 0, 0.2, 1) ;
      glClear(GL_COLOR_BUFFER_BIT) ;
    double itr = 0 ; double coeff1 = 0 ;
    for ( itr = 255 ; itr > 0 ; itr--)	
    {	coeff1 = itr/255 ;	
    	glColor3f(coeff1,coeff1,0) ;
     	glBegin(GL_QUADS) ;
      glVertex2f(-coeff1,0) ;
      glVertex2f(0,coeff1) ;
      glVertex2f(coeff1,0) ;
      glVertex2f(0,-coeff1) ;
    glEnd() ; 
    }   
      glFlush() ;
    }
     
    int main(int argc, char ** argv)
    { glutInit(&argc, argv) ;
      glutInitDisplayMode(GLUT_RGB) ;
      glutInitWindowSize(640,480) ;
      glutCreateWindow("Un programme") ;
      glutDisplayFunc(display) ;
      glutMainLoop() ;
    return(0) ;
    }
    La syntaxe pour la compilation est la suivante :
    Dans le Terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ~: $ gcc glutlosange.c -o executable -lGL -lglut -lGLU
    ~: $ ./executable
    freeglut et gcc doivent être installés.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    22 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 22 587
    Points : 156 567
    Points
    156 567
    Billets dans le blog
    11

    Par défaut

    Bonjour,

    L'indentation est étrange. Ce serait bien de la revoir.

    Sinon, je déconseille l'utilisation de GLUT, qui rend difficile une gestion correcte de la mémoire ainsi que de faire du beau code C++. De plus, il faut au minimum utilisé freeGLUT qui corrige quelques problèmes.
    Finalement, votre programme est ultra minimaliste, il n'y a pas de boucle de rendu (donc ça va prendre, je crois, 100% du CPU) et aucune gestion du clavier (pour quitter ?).

    Ah oui, j'oubliais, le plus gros point. Utilisation du pipeline fixe et des commandes OpenGL 1, qui sont complètement à oublier. Il vous faut passer à OpenGL 3, maintenant (Sachant que les commandes que vous utilisez sont dépréciées et seront supprimées (elles le sont en fait))
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre actif
    Avatar de cpp_qt_progmane
    Homme Profil pro
    sans Emploi
    Inscrit en
    décembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : sans Emploi

    Informations forums :
    Inscription : décembre 2007
    Messages : 193
    Points : 280
    Points
    280

    Par défaut

    Bonsoir,

    Citation de LittleWhite :
    .. votre programme est ultra minimaliste..
    ...j'avoue c'est vrai, je ne suis pas un grand programmeur en opengl,...je dirais plutôt débutant, avec ce langage informatique.

    Citation de LittleWhite :
    .. il n'y a pas de boucle de rendu (donc ça va prendre, je crois,
    100% du CPU)..
    Mon programme fonctionne trés bien. Peut-être pour les ordinateurs un peu plus anciens...
    Et j'ai créer ce programme avec un ordinateur monté ,avec un processeur Dual Core 2,7 Ghz ,une mémoire vive de 4Go de ram DDR2 et un disque dur SSD 40 Go.

    ...mais, merci quand même pour vos remarques.

  4. #4
    screetch
    Invité(e)

    Par défaut

    il n'y a pas de main loop donc le programme prend plutot 0% de cpu. La fonction display n'est appelee que lorsqu'elle a besoin d'ere appelee, donc sur un evenement, au lieu de 60 fois par seconde.

    pour faire tres vite un programme minimal qui affiche quelque chose, c'est pas mal; un bon point de depart pour un tutoriel comme Nehe GL

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2008
    Messages
    22 587
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : mai 2008
    Messages : 22 587
    Points : 156 567
    Points
    156 567
    Billets dans le blog
    11

    Par défaut

    La main loop est géré par GLUT. Qui va raffiché l'image que lorsqu'il en a besoin (même si c'est plus vite que 60 FPS). De plus, j'ose croire que si y a changement du rendu, il ne raffraichit pas.
    Mais oui, en effet, ça ne prend pas 100%, j'ai fait une erreur, car il n'y a pas de callback pour l'Idle. Par contre, l'image n'est raffiché que s'il y a un évènement sur la fenêtre. Donc je doute que ce soit très bon non plus.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    screetch
    Invité(e)

    Par défaut

    Vu qu'il n'y a pas d'animation, il n'y a pas forcement besoin de redessiner 60 fois par secondes la meme chose, donc ce n'est pas si faux de laisser glut afficher seulement lorsqu'un evenement est recu.

    Si le losange etait anime alors il faudrait une fonction "idle" effectivement, et demander a glut de redessiner. ca pourrait etre une extension de cet exemple.

  7. #7
    Membre actif
    Avatar de cpp_qt_progmane
    Homme Profil pro
    sans Emploi
    Inscrit en
    décembre 2007
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : sans Emploi

    Informations forums :
    Inscription : décembre 2007
    Messages : 193
    Points : 280
    Points
    280

    Par défaut

    Image capturée à l'écran...

    Nom : losange.png
Affichages : 27
Taille : 29,1 Ko

Discussions similaires

  1. Dessin cercle avec openGL-Glut
    Par Haage dans le forum OpenGL
    Réponses: 9
    Dernier message: 21/07/2007, 20h16
  2. Réponses: 4
    Dernier message: 03/05/2005, 10h03
  3. OpenGL GLUT et socket
    Par gloufy dans le forum GLUT
    Réponses: 12
    Dernier message: 03/06/2004, 14h12
  4. OpenGL, GLut... comment?
    Par big_gie dans le forum GLUT
    Réponses: 2
    Dernier message: 16/07/2003, 12h25
  5. Configurer OpenGL/Glut avec C++Bluider
    Par MiGoN dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/09/2002, 00h18

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