在我的代码中创建的有效OpenGL上下文的方式和阶段是什么?即使是简单的OpenGL代码,我也会遇到错误。
答案 0 :(得分:4)
从comp.graphics.api.opengl
上的帖子看,似乎大多数新手都在烧掉他们的第一个OpenGL程序。在大多数情况下,错误是由于在创建有效的OpenGL上下文之前调用OpenGL函数引起的。 OpenGL是一个状态机。只有在机器启动并在就绪状态下嗡嗡作响之后,它才能投入使用。
以下是一些创建有效OpenGL上下文的简单代码:
#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;
}
注意:
glutCreateWindow()
。它不仅创建了一个窗口,还创建了一个OpenGL上下文。glutCreateWindow()
之前,使用glutMainLoop()
创建的窗口不可见。