Programmer en C++
OpenGL - Premiere fenetre

1. Explication du code nécessaire

Avant de pouvoir commencer, vous devrez installer "freeglut". Une video sur "Youtube" explique très bien cette installation. Faire cependant très attention à l'installation des bibliothèques, car il existe des versions en 32 bits, et des versions en 64 bits qu'il faudra sélectionner en fonction de votre machine.

Dans un nouveau programme de type "GLUT project", nous commençons par inclure la bibliothèque qui permet à "freeglut" de fonctionner.

#include <GL/glut.h>

Nous utilisons ensuite notre fonction main() habituelle, dans laquelle nous écrivons tout le code nécessaire à l'initialisation de "freeglut", et à la création de la fenêtre.

int main(int argc, char** argv)
{
    // Contenu à écrire ici
}

Dans cette fonction "main()" nous écrivons la première instruction qui permet l'initialisation de la librairie nommée "glut". Remarquons qu'elle reprend les arguments transmis à la fonction "main()".

glutInit(&argc, argv);

La fonction que nous découvrons maintenant, permet de sélectionner les différentes options d'affichage. Son format est le suivant :

void glutInitDisplayMode(unsigned int mode);

Nous n'allons pas ici décrire tous les modes existants, mais simplement indiquer ceux que nous aurons à utiliser pour dessiner en 3D. Ainsi nous utiliserons le mode "GLUT_RGBA" pour un affichage en couleur incluant la transparence, le mode "GLUT_DOUBLE" pour bénéficier d'un tampon de mémoire supplémentaire, et du mode "GLUT_DEPTH" pour inclure la profondeur z et permettre la 3D. L'instruction s'écrira donc ("void" est inutile ici) :

glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);

Nous définissons dans l'écran, la position du coin supérieur gauche de notre fenêtre avec l'instruction :

glutInitWindowPosition(100, 100);

Les dimensions de la fenêtre, largeur et hauteur, sont données avec :

glutInitWindowSize(300, 200);

Puis la fenêtre est créée en lui transmettant son titre en argument.

glutCreateWindow("Titre de la fenetre");

L'affichage du contenu de la fenêtre se fait ensuite avec la fonction :

glutDisplayFunc(renduScene);

"renduScene" est le nom que j'ai donné à la fonction qui affichera ce que je désire dans ma fenêtre. Pour l'instant nous créons cette fonction, mais nous la laissons vide. Nous verrons au chapitre suivant comment dessiner dans cette fenêtre. La fonction sera placée avant la fonction "main()".

void renduScene()
{
    // Contenu de la fenêtre à écrire ici
}

La dernière instruction que nous verrons dans ce chapitre permet d'établir une boucle qui gardera notre fenêtre ouverte tant que l'action de fermeture ne sera pas exercée (clic sur la croix en haut à droite).

glutMainLoop();

Attention cette boucle ne permet pas de redessiner le contenu de la fenêtre. C'est notamment observable lors du redimensionnement. Découvrons maintenant le code complet.

2. Code complet pour ouvrir une fenêtre

#include <GL/glut.h>

void renduScene()
{
    // Contenu de la fenêtre à écrire ici
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(300, 200);
    glutCreateWindow("Fenetre avec freeglut");
    glutDisplayFunc(renduScene);

    glutMainLoop();

    return 0;
}

Sans plus tarder découvrons ce qu'on obtient :