2008-08-18 76 views

回答

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上下文。
  • 在調用glutMainLoop()之前,用glutCreateWindow()創建的窗口不可見。