Domanda
Come e in quale fase viene creato un contesto OpenGL valido nel mio codice?Ricevo errori anche sul semplice codice OpenGL.
Soluzione
Dai post su comp.graphics.api.opengl
, sembra che la maggior parte dei neofiti bruci le mani sul loro primo programma OpenGL. Nella maggior parte dei casi, l'errore è causato dalla chiamata di funzioni OpenGL anche prima della creazione di un contesto OpenGL valido. OpenGL è una macchina a stati. Solo dopo che la macchina è stata avviata e ronza nello stato pronto, può essere messa in funzione.
Ecco un semplice codice per creare un contesto OpenGL valido:
#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:
- Il richiamo di interesse qui è
glutCreateWindow ()
. Non solo crea una finestra, ma crea anche un contesto OpenGL. - La finestra creata con
glutCreateWindow ()
non è visibile finché non viene chiamatoglutMainLoop ()
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow