Pergunta

Como e em que estágio um contexto OpenGL válido é criado no meu código?Estou recebendo erros até mesmo em códigos OpenGL simples.

Foi útil?

Solução

Das postagens em comp.graphics.api.opengl, parece que a maioria dos novatos queima as mãos em seu primeiro programa OpenGL.Na maioria dos casos, o erro é causado devido à chamada de funções OpenGL antes mesmo de um contexto OpenGL válido ser criado.OpenGL é uma máquina de estados.Somente depois que a máquina for ligada e estiver funcionando, ela poderá ser colocada em funcionamento.

Aqui está um código simples para criar um 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;
}

Observação:

  • A chamada de interesse aqui é glutCreateWindow().Ele não apenas cria uma janela, mas também cria um contexto OpenGL.
  • A janela criada com glutCreateWindow() não é visível até glutMainLoop() é chamado.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top