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

Contribuez Discussion :

OpenGL, GLUT : dessin d'un losange


Sujet :

Contribuez

  1. #1
    Invité
    Invité(e)
    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.
    Dernière modification par LittleWhite ; 13/11/2012 à 23h20. Motif: Corrections

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    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
    Invité
    Invité(e)
    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
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    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
    Invité
    Invité(e)
    Par défaut
    Image capturée à l'écran...

    Nom : losange.png
Affichages : 506
Taille : 29,1 Ko
    Dernière modification par Invité ; 22/09/2017 à 08h45.

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