我复制了 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 ?? ()
真正的大帮助。有任何想法吗?我的配置可能有问题,所以请走开。