Я только начал пытаться использовать OpenGL в C ++ для класса (ранее я использовал его в Java довольно много). И я начал с того, что пытался написать что-то существенное, я не мог этого сделать, чтобы остановить ошибку Seg, поэтому я написал этот небольшой фрагмент кода, который представляет собой строчку для копирования строк из примера в первой главе Красной книги. Это также сег ошибки. У меня вопрос почему. Я пробовал как eclipse, так и netbeans, у меня в обоих проектах есть библиотека glut.h, я использую 64-разрядную версию Ubuntu 10.4, на виртуальной машине, использующей VMWare, оба gcc и freeglut установлены, оба netbeans и eclipse запустить обычный (не OpenGL) код C ++, который я пишу без ошибок сегментов.
В любом случае вот код:
#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;
}
Резьба [1] 28944 (приостановлено: сигнал: SIGSEGV: ошибка сегментации)
XF86DRIQueryVersion () в 0x7ffff7e7412e XF86DRIQueryExtension () в
0x7ffff7e742c9 0x7ffff7e73c70 0x7ffff7e53ff8 glXGetFBConfigs ()
в 0x7ffff7e4c71e glXChooseFBConfigSGIX () в 0x7ffff7e4cd97
fgChooseFBConfig () at freeglut_window.c: 205 0x7ffff794a8c7
fgOpenWindow () в freeglut_window.c: 768 0x7ffff794aac8
fgCreateWindow () в freeglut_structure.c: 106 0x7ffff7948f62
glutCreateWindow () в freeglut_window.c: 1,183 0x7ffff794a2a2 main ()
в потоке [1] 28944 (приостановлено: сигнал: SIGSEGV: ошибка сегментации)
XF86DRIQueryVersion () в 0x7ffff7e7412e XF86DRIQueryExtension () в
0x7ffff7e742c9 0x7ffff7e73c70 0x7ffff7e53ff8 glXGetFBConfigs ()
в 0x7ffff7e4c71e glXChooseFBConfigSGIX () в 0x7ffff7e4cd97
fgChooseFBConfig () at freeglut_window.c: 205 0x7ffff794a8c7
fgOpenWindow () в freeglut_window.c: 768 0x7ffff794aac8
fgCreateWindow () в freeglut_structure.c: 106 0x7ffff7948f62
glutCreateWindow () в freeglut_window.c: 1,183 0x7ffff794a2a2 main ()
at (проектные материалы здесь): 54 0x40100b