Red Book的第一个OpenGL程序在返回时崩溃了

时间:2012-02-14 11:53:05

标签: c++ opengl

我阅读了“红皮书”(OpenGL编程指南),并在Windows 7下使用VS2010尝试了本书中的第一个程序。

结果可以正常显示,但是当程序返回时,它会崩溃并显示以下信息:

Unhandled exception at 0x6992c660 in first.exe: 0xC0000005: Access violation.

我尝试了其他一些程序,它们也发出了同样的问题。

以下是代码:

#include <stdio.h>
#include <gl/glut.h>

void display(void)
{
/* clear all pixels */
    glClear(GL_COLOR_BUFFER_BIT);

/*  draw white polygon (rectangle) with corners at
 *  (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0)
 */
    glColor3f(1.0, 1.0, 1.0);
    glBegin(GL_POLYGON);
        glVertex3f(0.25, 0.25, 0.0);
        glVertex3f(0.75, 0.25, 0.0);
        glVertex3f(0.75, 0.75, 0.0);
        glVertex3f(0.25, 0.75, 0.0);
    glEnd();

/*  don't wait!
 *  start processing buffered OpenGL routines
 */
    glFlush();
}

void init(void)
{
/*  select clearing (background) color  */
    glClearColor(0.0, 0.0, 0.0, 0.0);

/* initialize viewing values */
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

/*
 *  Declare initial window size, position, and display mode
 *  (single buffer and RGBA). Open window with "hello"
 *  in its title bar. Call initialization routines.
 *  Register callback function to display graphics.
 *  Enter main loop and process events.
 */

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(250, 250);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("hello");
    init();

    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

0 个答案:

没有答案