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.

Était-ce utile?

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 lorsque glutMainLoop() est appelé.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top