简单的OpenGL代码总是会导致分段错误(Ubuntu上的C,虚拟机)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了简单的OpenGL代码总是会导致分段错误(Ubuntu上的C,虚拟机),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2551字,纯文字阅读大概需要4分钟。
内容图文
![简单的OpenGL代码总是会导致分段错误(Ubuntu上的C,虚拟机)](/upload/InfoBanner/zyjiaocheng/961/923f55789452417ca5e4fa07a308f8c6.jpg)
我刚开始尝试在C语言中使用OpenGL(我以前在Java中使用过相当数量).我开始尝试写一些实质性的内容,我无法做到这一点来阻止Seg故障,所以我写了这个小巧的代码片段,几乎是红皮书第一章中一个例子的行复制.它也是Seg故障.我的问题是为什么.我已经尝试了eclipse和netbeans,我在我的项目中链接了glut.h库,我运行64位ubuntu 10.4,在使用VMWare的虚拟机上运行,??gcc和freeglut都安装了,netbeans和eclipse都将运行常规(非OpenGL)C代码我写没有seg错误.
无论如何这里是代码:
#include <stdlib.h>
#include <GL/freeglut.h>
#include <stdio.h>
void init(){
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);
}
void display(){
glClear(GL_COLOR_BUFFER_BIT);
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();
glFlush();
}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250,250); //if I comment out this line,
glutInitWindowPosition(100,100);
glutCreateWindow(argv[0]); //this line,
init(); //this line and the glut main loop line it runs without any errors, but why wouldn't it? It's not doing anything now!
glutDisplayFunc(display);
glutMainLoop(); //if I comment out just this line I get illegal instruction instead of segfault but I need this line
return 0;
}
Thread [1] 28944 (Suspended : Signal : SIGSEGV:Segmentation fault)
XF86DRIQueryVersion() at 0x7ffff7e7412e XF86DRIQueryExtension() at
0x7ffff7e742c9 0x7ffff7e73c70 0x7ffff7e53ff8 glXGetFBConfigs()
at 0x7ffff7e4c71e glXChooseFBConfigSGIX() at 0x7ffff7e4cd97
fgChooseFBConfig() at freeglut_window.c:205 0x7ffff794a8c7
fgOpenWindow() at freeglut_window.c:768 0x7ffff794aac8
fgCreateWindow() at freeglut_structure.c:106 0x7ffff7948f62
glutCreateWindow() at freeglut_window.c:1,183 0x7ffff794a2a2 main()
at Thread [1] 28944 (Suspended : Signal : SIGSEGV:Segmentation fault)
XF86DRIQueryVersion() at 0x7ffff7e7412e XF86DRIQueryExtension() at
0x7ffff7e742c9 0x7ffff7e73c70 0x7ffff7e53ff8 glXGetFBConfigs()
at 0x7ffff7e4c71e glXChooseFBConfigSGIX() at 0x7ffff7e4cd97
fgChooseFBConfig() at freeglut_window.c:205 0x7ffff794a8c7
fgOpenWindow() at freeglut_window.c:768 0x7ffff794aac8
fgCreateWindow() at freeglut_structure.c:106 0x7ffff7948f62
glutCreateWindow() at freeglut_window.c:1,183 0x7ffff794a2a2 main()
at (project stuff here):54 0x40100b
解决方法:
有帮助 :
在glutInitDisplayMode中添加GLUT_DEPTH
使用此标志为我工作,并非没有(在glutCreateWindow上的段错误)
内容总结
以上是互联网集市为您收集整理的简单的OpenGL代码总是会导致分段错误(Ubuntu上的C,虚拟机)全部内容,希望文章能够帮你解决简单的OpenGL代码总是会导致分段错误(Ubuntu上的C,虚拟机)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。