Etape 2 : Ouvrir une fenêtre avec OpenGL

Transcription

Etape 2 : Ouvrir une fenêtre avec OpenGL
Etape 2 : Ouvrir une fenêtre avec OpenGL
Maintenant que vous êtes capable d’installer correctement les librairies OpenGL, ce tutorial va vous
apprendre à ouvrir une fenêtre en OpenGL.
Pour cela, nous allons vous montrer un code source et vous l’expliquer en détail.
Ouvrez un nouveau Projet OpenGL en C++. (Fichier=>Nouveau=>Projet=>Onglet Multimédia)
Tout d’abord, voici les headers :
#ifdef WIN32
#include <windows.h>
#endif
#include <gl/gl.h>
#include <gl/glut.h>
On s’assure ici de la portabilité du code avec le #ifdef WIN32.
Puis les deux autres includes sont les includes nécessaires à la bonne utilisation d’OpenGL.
Nous allons d’abord définir la fonction d’affichage « final » de notre fenêtre.
Voici le code correspondant :
void Display() {
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
• glClear sert à remplir un buffer.
• glFlush() termine notre dessin de la scène, en forçant toutes les commandes à être éxécutées, et
envoie ainsi le flux de données vers le buffer d'affichage. Si on n'utilise pas glFlush(), alors l'affichage
de la scène ne se produit jamais. Ainsi, cette fonction est incontournable en OpenGL.
Voici à présent notre main :
int main(int argc, char* argv[])
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
glutInitWindowSize(300, 350);
glutInitWindowPosition(100, 50);
glutCreateWindow("Fenetre OpenGL");
glutDisplayFunc(Display);
glutMainLoop();
return 0;
}
• glutInit sert à initialiser GLUT.
• glutInitDisplayMode définit les modes d’affichages : ceux-ci sont nombreux. Ici nous avons choisi
deux modes par défaut GLUT_RGBA qui définit les couleurs vraies en 32 bit et GLUT_SINGLE qui
n’utilise qu’un seul tampon (ou buffer).
• glutInitWindowSize définit la taille de la fenêtre. Le premier paramètre est la de la fenêtre (ici 300)
et le second est la hauteur de la fenêtre (ici 350).
• glutInitWindowPosition définit la position de la fenêtre. Le premier paramètre représente la
position en abscisse (ici 100) et le second la position en ordonnée (ici 50).
• glutCreateWindow définit le titre de la fenêtre OpenGL.
• glutDisplayFunc permet l’appel de la fonction passée en paramètre pour assurer l’affichage de la
scène. Ici, la fonction appelée est « Display », elle est décrite ci-dessus.
• glutMainLoop est une fonction essentielle au bon fonctionnement du programme. En effet, elle
gère toutes les fonctions définies auparavant et les dirige où il faut (ex : diriger la fonction d’affichage
sur la fonction void Display() ; ) . C’est une boucle d’affichage.
Voici un résumé du code ainsi que son résultat :
Remarque : Le programme garde sa place en mémoire et n’est pas « automatiquement » tué par la
fermeture de la fenêtre. Vous pouvez alors faire Exécuter=>Ferme le programme (ALT+F2) sous
DevC++ pour le tuer ou bien passer par votre gestionnaire de tâches (le programme aura le nom de
votre Projet).