OpenGL Moderne

FAQ

Opengl-tutorial.org

Traducteur

Alexandre Laurent

Une FAQ sur l'utilisation des tutoriels OpenGL Moderne.

- Titre : OpenGL Moderne

- Auteur : Opengl-tutorial.org

- Traducteur : Alexandre Laurent

- Parution : 17 septembre 2014

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2014 opengl-tutorial.org. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Navigation

- I. Envoyer des e-mails

- II. Je ne peux pas compiler les tutoriels

- III. J'ai compilé les tutoriels, mais cela plante au démarrage. Que se passe-t-il ?

- III-A. GPU/Système d'exploitation incompatible

- III-B. Mauvais répertoire de travail

- III-C. Pas de VAO

- III-D. Bogue de GLEW

- III-E. CMake

- IV. Pourquoi devrais-je utiliser OpenGL 3.3 si Intel et Mac ne peuvent pas l'exécuter ?

- V. Quelle version d'OpenGL dois-je utiliser ?

- VI. Où télécharger OpenGL 3 ?

- VII. Pourquoi créez-vous un VAO dans chaque tutoriel, mais que vous ne l'utilisez jamais ?

- VIII. J'ai une erreur « Impossible de démarrer le programme ALL_BUILD »

- IX. J'obtiens un message à propos du répertoire de travail et le programme plante

- X. Remerciements

- Navigation

Navigation

Sommaire

I - Envoyer des e-mails

Le meilleur moyen d'avoir du support est d'utiliser le forum OpenGL de Developpez.com ou d'envoyer des courriels à contact@opengl-tutorial.org. Toutefois, si vous avez un problème, veuillez inclure autant d'informations que vous le pouvez. Cela signifie que vous devez au moins envoyer :

- le système d'exploitation : Gentoo, Windows XP… (souvenez-vous : utilisez le portage OpenGL 2.1 si vous avez un Mac !) ;

- 32 ou 64 bits ;

- la carte graphique : NVIDIA, AMD, Intel, S3, Matrox ? (Souvenez-vous : utilisez le portage OpenGL 2.1 si vous avez un GPU intégré !).

Et optionnellement toute autre information que vous pensez utile. Cela peut comprendre :

- la version du pilote graphique ;

- la pile d'appels ;

- des captures d'écrans ;

- la sortie console ;

- des minidump…

Et bien sûr, lisez la FAQ en premier. Cela s'appelle FAQ pour une certaine raison =).

II - Je ne peux pas compiler les tutoriels

- Assurez-vous d'avoir lu le premier tutoriel. S'IL VOUS PLAIT, utilisez CMake au lieu de recréer le projet ou au moins, assurez-vous d'avoir lu « Compiler votre propre application C ».

- Si vous avez une erreur liée à la bibliothèque Assimp, cela sera corrigé prochainement ; toutefois, cela n'affecte qu'un SEUL tutoriel, tous les autres pourront être compilés correctement.

- Si vous avez une erreur liée à la bibliothèque AntTweakBar, cela n'affecte qu'un SEUL tutoriel, tous les autres pourront être compilés correctement.

- S'il y a vraiment un souci, n'hésitez pas à poster sur le forum ou envoyer un courriel.

III - J'ai compilé les tutoriels, mais cela plante au démarrage. Que se passe-t-il ?

Plusieurs raisons possibles :

III-A - GPU/Système d'exploitation incompatible

Veuillez vérifier si vous avez une carte Intel. Vous pouvez le faire en utilisant glewinfo, GPU Caps Viewer ou n'importe quel autre outil.

Les cartes graphiques Intel, sauf les récentes HD4000, ne supporte pas OpenGL 3.3. Cela veut dire que la plupart supporte seulement OpenGL 2.1. Vous devez télécharger la version OpenGL 2.1 sur la page des téléchargements, à la place.

L'autre raison possible est que vous êtes sur un Mac, avec une version avant Lion. La même remarque s'applique ici aussi…

III-B - Mauvais répertoire de travail

Il se peut que vous n'exécutiez pas les tutoriels à partir du bon répertoire. Essayez en double-cliquant sur le .exe à partir de l'explorateur de fichiers.

Lisez le premier tutoriel pour configurer votre IDE afin que vous puissiez déboguer l'exécutable.

III-C - Pas de VAO

Si vous avez créé un programme à partir de rien, assurez-vous d'avoir créé un VAO :

GLuint VertexArrayID;
glGenVertexArrays(1, &VertexArrayID);
glBindVertexArray(VertexArrayID);

III-D - Bogue de GLEW

GLEW possède un bogue qui rend impossible l'utilisation d'un contexte core (sauf lorsque vous utilisez le code source des tutoriels, qui a été corrigé). Trois solutions :

- demandez à GLFW de fournir un profil de compatibilité à la place :

glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);

- utilisez glewExperimental ; voici la méthode recommandée :

glewExperimental = true;

- corrigez GLEW… Voir ce patch.

III-E - CMake

Vous avez lu le premier tutoriel, n'est-ce pas ? Vous n'avez pas essayé d'écrire votre propre Makefile et compilez tout vous-même, N'EST-CE PAS ?

IV - Pourquoi devrais-je utiliser OpenGL 3.3 si Intel et Mac ne peuvent pas l'exécuter ?

Aussi connu sous l'expression suivante :

V - Quelle version d'OpenGL dois-je utiliser ?

En fait, je ne recommande pas d'utiliser OpenGL 3 ou supérieur pour une application. Je l'utilise dans les tutoriels, car c'est la méthode propre pour apprendre OpenGL, sans tous les trucs dépréciés et, car une fois que vous connaissez OpenGL 3.3, l'utilisation d'OpenGL 2.1 est immédiate.

Ce que je recommande :

- apprenez OpenGL 3.3 afin de connaître la « bonne façon » ;

- définissez un matériel cible pour votre application ; par exemple, elle nécessite les FBO et le GLSL ;

- utilisez GLEW pour charger les extensions ; au démarrage, refusez tous les matériels qui n'ont pas le niveau de fonctionnalité requis ;

- à partir de maintenant, vous pouvez coder presque comme si vous étiez avec OpenGL 3.3, avec juste quelques changements ;

- si vous souhaitez vraiment gérer avec les matériels plus anciens/moins chers, vous pouvez toujours les gérer en désactivant les effets qui nécessite les FBO, par exemple.

Il y a une grande situation où vous pouvez souhaiter utiliser une version très récente, disons OpenGL 4.2 : vous êtes un étudiant diplômé faisant de la recherche, vous avez vraiment besoin d'une fonctionnalité récente et vous ne vous souciez pas de la compatibilité, car votre logiciel ne sera jamais exécuté en dehors de votre laboratoire. Dans ce cas, ne perdez pas de temps et partez directement avec la version la plus récente d'OpenGL que votre matériel supporte.

VI - Où télécharger OpenGL 3 ?

Vous ne le téléchargez pas.

Sur Windows, par exemple, vous avez seulement opengl32.dll, qui est seulement OpenGL 1.1. MAIS il y a une fonction, wglGetProcAddress(), qui permet de récupérer les fonctions qui ne sont pas implémentées directement dans opengl32.dll, mais qui sont disponibles dans le pilote.

GLEW appelle wglGetProcAddress sur tous les symboles nécessaires et les rend disponibles. (vous pouvez le faire vous-même, mais c'est extrêmement ennuyeux). GLEW déclare aussi des constantes qui n'existait pas dix ans auparavant, comme, GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB.

Donc, assurez-vous que votre GPU supporte la dernière version nécessaire, utilisez GLEW et vous êtes prêt.

VII - Pourquoi créez-vous un VAO dans chaque tutoriel, mais que vous ne l'utilisez jamais ?

Faux. Il est lié, donc en réalité, il est utilisé durant toute l'exécution.

Les VAO sont des abstractions de VBO. Ils se souviennent quel tampon est lié à quel attribut et une multitude d'autres choses. Ils réduisent le nombre d'appels OpenGL avant glDrawArrays/Elements(). Depuis OpenGL 3 Core, ils sont obligatoires, mais vous pouvez en utiliser seulement un seul et le modifier une fois pour toute (c'est ce qui est fait dans ce tutoriel).

Les VAO peuvent être source de confusion pour ce tutoriel pour débutant et il n'y a pas d'équivalant en OpenGL 2 (qui est recommandé en production, voir ci-dessus) et le gain de performance n'est pas très visible. Si vous êtes intéressés dans les VAO, veuillez jeter un œil au wiki d'OpenGL. Cela peut légèrement simplifiez votre application et peut améliorer légèrement les performances, mais ce n'est pas toujours le cas.

VIII - J'ai une erreur « Impossible de démarrer le programme ALL_BUILD »

ALL_BUILD n'est qu'un projet pour aider les projets générés par CMake ; ce n'est pas un vrai programme.

Comme indiqué dans le premier tutoriel, vous devez sélectionner le projet que vous souhaitez exécuter en effectuant un clic droit sur un projet (à partir de Visual Studio) et sélectionner « Définir comme projet de démarrage », comme ceci :

IX - J'obtiens un message à propos du répertoire de travail et le programme plante

Vous devez démarrer le programme à partir des dossiers tutorial01_first_window/, tutorial02_red_triangle/, etc. Si vous démarrez le programme à partir de l'IDE, vous devez le configurer pour qu'il fasse ainsi.

Veuillez lire le premier tutoriel pour avoir plus de détails.

X - Remerciements

Cet article est une traduction autorisée dont le texte original peut être trouvé sur opengl-tutorial.org.

Navigation

Sommaire