Question
Comment et à quelle étape un contexte OpenGL valide est-il créé dans mon code ?Je reçois des erreurs même sur du code OpenGL simple.
La solution
D'après les messages sur comp.graphics.api.opengl
, il semble que la plupart des débutants se brûlent les mains avec leur premier programme OpenGL.Dans la plupart des cas, l'erreur est due à l'appel des fonctions OpenGL avant même la création d'un contexte OpenGL valide.OpenGL est une machine à états.Ce n'est qu'une fois que la machine a démarré et qu'elle est prête à bourdonner qu'elle peut être mise en service.
Voici un code simple pour créer un contexte OpenGL valide :
#include <stdlib.h>
#include <GL/glut.h>
// Window attributes
static const unsigned int WIN_POS_X = 30;
static const unsigned int WIN_POS_Y = WIN_POS_X;
static const unsigned int WIN_WIDTH = 512;
static const unsigned int WIN_HEIGHT = WIN_WIDTH;
void glInit(int, char **);
int main(int argc, char * argv[])
{
// Initialize OpenGL
glInit(argc, argv);
// A valid OpenGL context has been created.
// You can call OpenGL functions from here on.
glutMainLoop();
return 0;
}
void glInit(int argc, char ** argv)
{
// Initialize GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowPosition(WIN_POS_X, WIN_POS_Y);
glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);
glutCreateWindow("Hello OpenGL!");
return;
}
Note:
- L'appel d'intérêt ici est
glutCreateWindow()
.Cela crée non seulement une fenêtre, mais crée également un contexte OpenGL. - La fenêtre créée avec
glutCreateWindow()
n'est visible que lorsqueglutMainLoop()
est appelé.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow