有效的OpenGL上下文

4

在我的代码中,OpenGL上下文是如何创建的?在哪个阶段创建的?即使是简单的OpenGL代码也会出现错误。

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()之前不可见。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接