4

在我的代码中如何以及在什么阶段创建有效的 OpenGL 上下文?即使是简单的 OpenGL 代码,我也会遇到错误。

4

1 回答 1

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()的。
于 2008-08-18T09:17:46.193 回答