【问题标题】:Valid OpenGL context有效的 OpenGL 上下文
【发布时间】:2017-03-23 15:15:00
【问题描述】:

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

【问题讨论】:

    标签: opengl glut


    【解决方案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 上下文。
    • 在调用glutMainLoop() 之前,使用glutCreateWindow() 创建的窗口不可见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 2015-12-22
      • 2017-01-25
      • 1970-01-01
      相关资源
      最近更新 更多