有效的OpenGL上下文(Valid OpenGL context)

2019-07-18 07:45发布

如何以及在什么阶段是一个有效的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
标签: opengl glut