代码之家  ›  专栏  ›  技术社区  ›  Ashwin Nanjappa

有效的OpenGL上下文

  •  3
  • Ashwin Nanjappa  · 技术社区  · 16 年前

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

    1 回复  |  直到 9 年前
        1
  •  4
  •   NoNaMe    12 年前

    从帖子上 comp.graphics.api.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() 被称为。