如何以及在什么阶段是一个有效的OpenGL上下文在我的代码产生的? 我对即使是简单的OpenGL代码得到错误。
Answer 1:
从职位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()
被调用。
文章来源: Valid OpenGL context