11/17

4.3. Functions et fichiers

Le programme précédent était entièrement écrit à l’aide d’un seul fichier avec peu d’utilisation de fonctions. Comme dans la plupart des programmes, les sous-parties de celui-ci peuvent être regroupées dans des fonctions, aidant ainsi à la lisibilité et réutilisabilité.

Le programme suivant implémente le même résultat que précédemment (rotation d’un triangle rouge), mais cette fois

  • Les sous-parties du code sont regroupées en fonctions

  • Des parties homogènes de code sont séparées en différents fichiers.

    • main.cpp contient les fonctions d’appels générales ainsi que l’initialisation et l’affichage spécifique à la scène.

    • opengl_helper.cpp contient les procédures génériques associées à l’utilisation d’OpenGL qui peuvent être réutilisée dans d’autres programmes (compilation de shaders, etc). Notez que la compilation des shaders inclut cette fois la gestion d’erreurs.

    • window_helper.cpp contient le code permettant l’initialisation de GLFW et la création d’une fenêtre avec un contexte OpenGL.

    • le répertoire shader/ contient le code GLSL dans des fichiers séparés (vertex shader, fragment shader). Ces fichiers sont lus à chaque fois que le programme est lancé.


[ code ]

triangle

Assurez-vous que vous puissiez compiler et lancer l’exécutable.

Notez que cette fois, il est nécessaire de lancer l’exécution du programme depuis le répertoire functions_and_files/ (ou plus généralement, depuis un chemin à le répertoire shaders/ est accessible). Le chargement des fichiers décrivant les shaders se réalise dans le code d’après le chemin local shaders/vertex[fragment]_shader.glsl, celui-ci doit donc être accessible à chaque exécution.

En pratique, si vous lancez l’exécutable depuis la ligne de commande, lancez celle-ci depuis le répertoire racine (functions_and_files/) (see README pour instructions), et si vous l’exécutez depuis un IDE, il faut spécifier ce répertoire comme étant celui de "run".