Frage

Wie und in welchem ​​Stadium wird in meinem Code ein gültiger OpenGL-Kontext erstellt?Selbst bei einfachem OpenGL-Code erhalte ich Fehler.

War es hilfreich?

Lösung

Von den Beiträgen an comp.graphics.api.opengl, es scheint, als würden sich die meisten Neulinge bei ihrem ersten OpenGL-Programm die Hände verbrennen.In den meisten Fällen wird der Fehler dadurch verursacht, dass OpenGL-Funktionen aufgerufen werden, noch bevor ein gültiger OpenGL-Kontext erstellt wurde.OpenGL ist eine Zustandsmaschine.Erst wenn die Maschine gestartet ist und im Bereitschaftszustand brummt, kann sie in Betrieb genommen werden.

Hier ist ein einfacher Code zum Erstellen eines gültigen OpenGL-Kontexts:

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

Notiz:

  • Der Aufruf von Interesse ist hier glutCreateWindow().Es erstellt nicht nur ein Fenster, sondern auch einen OpenGL-Kontext.
  • Das mit erstellte Fenster glutCreateWindow() ist erst sichtbar glutMainLoop() wird genannt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top