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.
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 hastaglutMainLoop()
se llama.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow