Je viens de commencer à essayer d'utiliser OpenGL en C++ pour une classe (je l'ai déjà utilisé dans Java en quantité). Et j'ai commencé à essayer d'écrire quelque chose de substantiel, je ne pouvais pas obtenir cela pour arrêter Seg faute donc j'ai écrit ce petit morceau de code qui est presque une ligne pour la copie en ligne d'un exemple dans le premier chapitre du livre rouge. Il fautes également Seg. Ma question est pourquoi. J'ai essayé à la fois éclipse, et netbeans, j'ai la bibliothèque glut.h liée dans mes projets dans les deux, je cours 64 bits ubuntu 10.4, sur une machine virtuelle en utilisant VMWare, gcc et freeglut sont tous les deux installés, Netbeans et eclipse exécuter du code C++ normal (non OpenGL) que j'écris sans erreur de segmentation.Un simple code OpenGL provoque toujours une erreur de segmentation (C++ sur Ubuntu, machine virtuelle)
est ici le code Quoi qu'il en soit:
#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
Je ne suis pas sûr que l'édition de l'OpenGL du titre aidera beaucoup BioBuckyBall, comme je l'ai spécifié Ubuntu ne se fâche pas avec le code C++ de base uniquement lorsque j'inclue des éléments OpenGL. Donc, même si vous avez simplifié le titre, vous l'avez également rendu moins précis. – will
Quelle est la trace de la pile où le segfault se produit? Avez-vous vérifié 'glGetError()'? –
D'autres codes OpenGL s'exécutent-ils dans la même machine virtuelle? Quelle est la sortie de glxinfo? –