Domanda

Come e in quale fase viene creato un contesto OpenGL valido nel mio codice?Ricevo errori anche sul semplice codice OpenGL.

È stato utile?

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 chiamato glutMainLoop () .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top