Saltar al contenido

glut: contexto OpenGL válido

octubre 20, 2021
apple touch icon@2

De las publicaciones en comp.graphics.api.opengl, parece que la mayoría de los novatos se queman las manos con su primer programa OpenGL. En la mayoría de los casos, el error se debe a que las funciones OpenGL se llaman incluso antes de que se cree un contexto OpenGL válido. OpenGL es una máquina de estado. Solo después de que la máquina se haya encendido y zumbando en el estado listo, se puede poner en funcionamiento.

Aquí hay un código simple para crear un contexto OpenGL válido:

#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;
}

Nota:

  • La llamada de interés aquí es glutCreateWindow(). No solo crea una ventana, sino que también crea un contexto OpenGL.
  • La ventana creada con glutCreateWindow() no es visible hasta glutMainLoop() se llama.
close