OpenGL FAQ

 

1. Question générales

1.1 "J'ai le jeu XYZ, mais quand je le lance il me dit qu'il y a une erreur avec OpenGL, qu'est-ce que je dois faire ?"

Me foutre la paix et lire le manuel/site web du jeu, section "Support technique". Je n'ai aucune solution pour ce genre de problèmes, qui n'ont d'ailleurs rien à voir avec la programmation OpenGL. 

1.2 "J'ai un devoir à faire pour l'école, est-ce que tu peux m'aider ?"

Non. Je fais pas les devoirs des autres, j'ai suffisamment à faire avec mon propre travail. 

1.3 "Quand est-ce que tu feras d'autres tutorials ?"

Peut-être demain, peut-être jamais. La réponse exacte se trouve entre ces deux bornes. 

2. Questions de compilation

2.1 "Où trouver GLUT ?"

Ici : http://www.opengl.org/resources/libraries/glut/glut_downloads.html 

2.2 "Où trouver les fichier glu32.lib et opengl32.lib ?"

Ils sont fournis avec Visual C++. Si vous utilisez un autre compilateur, voyez dans sa doc sur son système de link, il utilise probablement des fichiers .lib différents de VC++. 

2.3 "Mon compilateur me donne des erreurs avec le code que tu as dit de taper"

Vous avez mal lu ou mal tapé ou mal suivi les instructions, relisez mieux. Les erreurs super classiques :
  • "unresolved external symbol _main" : vous essayez de compiler un source Win32 Application dans un projet Win32 Console. Relisez le début du chapitre "Initialiser OpenGL"
  • "unresolved external symbol WinMain" : c'est l'inverse, vous essayez de compiler un source Win32 Console dans un projet Win32 Application. Relisez le début du chapitre "Initialiser OpenGL"
  • "unresolved external symbol __imp__wglMakeCurrent@8", etc. : vous avez oublié de linker avec une ou plusieurs des librairies (opengl32.lib, glu32.lib, glut32.lib)
 

2.4 "J'ai un autre compilateur que Visual C++. Comment on fait ?"

On lit la doc du compilateur. 

2.5 "Je ne comprends pas le code source" / "Comment on fait ceci ou cela en C/C++ ?"

Ces tutorials sont fait pour des gens qui savent déjà programmer et qui voudraient se mettre à la 3D. Si vous n'y connaissez rien au C ou au C++, vous pouvez toujours vous essayer à OpenGL, mais je ne suis pas là pour vous apprendre le langage. Il y a des tas de livres et de sites expliquant comment programmer en n'importe quel langage possible et imaginable. 

2.6 "Je veux faire de l'OpenGL dans un autre langage"

C'est tout à fait possible. Les fonctions OpenGL sont disponibles dans un tas de langages (ASM, C, C++, C#, Delphi, Java, Power Basic, Perl, Python, Visual Basic, Visual Fortran, etc.). Mais je ne sais en faire qu'en C/C++, donc j'aurais du mal à vous aider. Jetez un oeil sur le site de Nehe (http://nehe.gamedev.net/), ses tutorials sont disponibles dans plein de langages différents. Vous y trouverez sûrement votre bonheur. 

3. Coquilles dans les tutorials

C'est pas facile de faire quelque chose de parfait, et évidemment il y a aussi des erreurs dans mes pages. J'essaye de les corriger la plupart du temps, mais étant donné que ces tutorials sont mirrorés sur pas mal d'autres sites, il est possible que ces erreurs persistent. Voici donc les réponses à celles-ci. Souvenez-vous : la seule et unique addresse originale de ces tutorials est http://antoche.alrj.org/. 

3.1 "Quand j'utilise glEnable( GL_DEPTH_TEST ); avec tes exemples, je ne vois plus rien ou l'affichage est tout niqué

Il y a une petite erreur dans les tuts : le 3e paramètre de gluPerspective, qui représente la distance de clipping proche (ie. en dessous de cette distance, les triangles seront coupés), ne doit pas être nulle, il faut forcément qu'elle soit strictement supérieure à 0. Certaines implémentations corrigent le problème automatiquement (ce qui était le cas de la mienne, c'est pourquoi je n'ai pas vu le problème), et d'autres perdent les pédales. Pour ne plus avoir de problème, mettez ce paramètre par exemple à 0.1. 

3.2 "Dans un de tes tutorial, il y a deux case WM_SIZE: de suite"

Le deuxième doit être case WM_PAINT:, vous l'aurez probablement deviné tout seul. 

3.3 "Mon compilateur n'aime pas float(width)/float(height)"

C'est parce que c'est du code C++. C'est simplement une instruction de cast. Pour la rendre compatible C, remplacez-la simplement par (float)width/(float)height. 

3.4 "Mon compilateur trouve pas sin et cos"

Il faut include math.h. 

3.5 "Mon compilateur trouve pas glutPostRediplay"

Il y avait une erreur sur les pages, c'est glutPostRedisplay. 

C'est fini

Voilà, c'est terminé. Si vous n'avez toujours pas trouvé de réponse à vos questions ici, alors vous pouvez m'écrire à Antoine.Bouthors@gmail.com. Merci à tous ceux qui m'ont envoyé des messages pour corriger les erreurs et améliorer ces tutoriaux. 


↑ ↑