Pregunta

¿Cómo y en qué etapa se crea un contexto OpenGL válido en mi código?Recibo errores incluso en código OpenGL simple.

¿Fue útil?

Solución

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 se llaman funciones OpenGL incluso antes de que se cree un contexto OpenGL válido.OpenGL es una máquina de estados.Sólo después de que la máquina se haya puesto en marcha y zumbando en el estado de lista, se podrá 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.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top