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.
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