2008-08-18 4 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.
  • Окно, созданное с помощью glutCreateWindow(), не отображается до тех пор, пока не будет выдан glutMainLoop().
Смежные вопросы