Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Contribuez
Contribuez Vos contributions pour la rubrique 2D / 3D / Jeux : FAQ, codes sources, tutoriels, sondages, débats, idées...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 12/11/2012, 20h31   #1
broozeur32
Membre actif
 
Avatar de broozeur32
 
Homme évril noir d'afrique
AutoEntrepreneur
Inscription : décembre 2007
Messages : 153
Détails du profil
Informations personnelles :
Nom : Homme évril noir d'afrique
Âge : 31
Localisation : France

Informations professionnelles :
Activité : AutoEntrepreneur

Informations forums :
Inscription : décembre 2007
Messages : 153
Points : 166
Points : 166
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 :
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 :
1
2
3
 
~: $ gcc glutlosange.c -o executable -lGL -lglut -lGLU
~: $ ./executable
freeglut et gcc doivent être installés.
broozeur32 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/11/2012, 22h18   #2
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 763
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

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

Informations forums :
Inscription : mai 2008
Messages : 10 763
Points : 43 026
Points : 43 026
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
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 14/11/2012, 00h51   #3
broozeur32
Membre actif
 
Avatar de broozeur32
 
Homme évril noir d'afrique
AutoEntrepreneur
Inscription : décembre 2007
Messages : 153
Détails du profil
Informations personnelles :
Nom : Homme évril noir d'afrique
Âge : 31
Localisation : France

Informations professionnelles :
Activité : AutoEntrepreneur

Informations forums :
Inscription : décembre 2007
Messages : 153
Points : 166
Points : 166
Bonsoir,

Citation:
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:
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.
broozeur32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2012, 23h50   #4
screetch
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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
  Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 00h21   #5
LittleWhite
Responsable 2D/3D/Jeux


 
Avatar de LittleWhite
 
Homme Alexandre Laurent
Ingénieur développement logiciels
Inscription : mai 2008
Messages : 10 763
Détails du profil
Informations personnelles :
Nom : Homme Alexandre Laurent
Localisation : France

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

Informations forums :
Inscription : mai 2008
Messages : 10 763
Points : 43 026
Points : 43 026
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
La rubrique a aussi un blog !

Ma page sur DVP
Mon Portfolio

Qui connaît l'erreur, connaît la solution.
LittleWhite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2012, 10h08   #6
screetch
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
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.
  Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h56.


 
 
 
 
Partenaires

Hébergement Web