믿을 수 없을만큼 기본적인 GLUT OpenGL 프로그램의 OpenGL Reference Guide에서 첫 번째 프로그램을 복사했습니다.기본 OpenGL 프로그램이 작동하지 않지만 gdb에서 작동합니다
저는 Code :: Blocks IDE를 사용하고 있으며 우분투 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
)로 일부 fenangling 후, 나는 오류없이 컴파일 할 수있었습니다.
Code :: Blocks 내에서 또는 터미널을 사용하여 실행하면 세그먼트 오류가 발생합니다. 창의 그림자가 나타나지만 파괴되고 프로그램이 종료됩니다.
정말 이상한 부분은 디버깅하려고 할 때입니다. Code :: Blocks에서 "Debug"를 선택하거나 명령 행에서 gdb를 직접 실행 (gdb <program>
을 실행하고 run
을 실행)하면 정상적으로 실행됩니다. 오류 또는 문제가 발생하지 않으며 예상대로 실행됩니다.
이렇게하면 문제가 무엇인지 파악하기가 매우 어렵습니다. 나는 GDB는 보통 실행에서 생성 된 코어 파일을 확인했지만, 모두가
Program terminated with signal 11, Segmentation fault.
#0 0x00007f9ee3a5815c in ??()
리얼 큰 도움이했다. 어떤 아이디어? 구성에 문제가있을 수 있으므로 멀리 물어보십시오. 나는 과잉 사용한 적이 있기 때문에 나는 확실하지 않다
오픈 소스 드라이버를 사용하면 Linux에서 OpenGL을 디버그하기가 더 쉽습니다. 이것은 오픈 소스의 정치 또는 소스 코드에 대한 액세스와는 아무런 관련이 없습니다. 오픈 소스 드라이버는 Valgrind-clean보다 안정적입니다. –
또한 프로그램이 잘 보이고 나를 위해 작동합니다. 그래서 다른 드라이버를 설치해야하는 또 다른 이유입니다. glxgears가 시스템에서 작동합니까? ('apt-get install mesa-utils') –