我复制了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/
和lib/
目录(/usr/include
和/usr/lib/x86_64-linux-gnu
)进行了一些操作之后,我设法让它编译而没有错误。
当从Code :: Blocks中运行或使用终端时,我会遇到分段错误。出现一个窗口的阴影,然后它被销毁并退出程序。
真正奇怪的部分是当我尝试调试它时。从Code :: Blocks中选择“Debug”或在命令行中使用gdb(运行gdb <program>
然后run
),它运行得很好。不会遇到任何错误或问题,并且会按预期执行。
这使我很难弄清问题是什么。我让gdb检查生成的核心文件是否正常执行,但它说的只是
Program terminated with signal 11, Segmentation fault.
#0 0x00007f9ee3a5815c in ?? ()
真正的大帮助。有任何想法吗?我的配置可能有问题,所以请你离开。
答案 0 :(得分:1)
我不确定,因为我从未使用过剩,但this网站似乎建议像这样调用glutInitDisplayMode
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
虽然你这样称呼它
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
比较两者让我想知道你是否应该切换你的两个参数?
编辑:
没关系我,我被吓倒了。那些不是2个参数的课程&gt;&lt;它们只是简单的OR。这是上午9点,我没有睡觉,所以原谅我的愚蠢:&lt;