1

我复制了 OpenGL 参考指南中的第一个程序,这是一个非常基本的 GLUT OpenGL 程序。

我正在使用 Code::Blocks IDE 并在 Ubuntu 12.10 上运行。

我正在使用带有 fglrx 驱动程序的 ATI Mobile Radeon 4670。

我正在使用此代码来确保我的环境正常工作。这是代码:

#include <GL/glut.h>
#include <stdlib.h>

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);

    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();

    glFlush();
}

void init(void)
{
    glClearColor(0.0,0.0,0.0,0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);
}

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;
}

我认为这是我可以运行并希望能够编译的最简单的代码。include/在对andlib/目录(/usr/include和)进行了一番讨论之后/usr/lib/x86_64-linux-gnu,我设法让它编译没有错误。

当从 Code::Blocks 内或使用终端运行时,我得到一个分段错误。出现一个窗口的阴影,但随后它被破坏并且程序退出。

真正奇怪的部分是当我尝试调试它时。从 Code::Blocks 中选择“调试”或在命令行上自己使用 gdb(运行gdb <program>然后run),它运行得很好。没有遇到任何错误或问题,并且按预期执行。

这让我很难弄清楚问题出在哪里。我让 gdb 检查生成的核心文件是否正常执行,但它所说的只是

Program terminated with signal 11, Segmentation fault.
#0  0x00007f9ee3a5815c in ?? ()

真正的大帮助。有任何想法吗?我的配置可能有问题,所以请走开。

4

1 回答 1

1

我不确定,因为我从未使用过 glut,但这个网站似乎建议像这样调用 glutInitDisplayMode

glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);

当你这样称呼它时

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

比较两者让我想知道您是否应该切换您的两个参数?

编辑:
别管我,我被智障了。当然,这些不是 2 个参数 >< 它们只是 OR'd。现在是早上 9 点,我还没睡,请原谅我的愚蠢:<

于 2012-12-31T08:03:03.403 回答