2013-04-28 4 views
0

windows xp virtualbox에 devcpp 4.9.9.2를 재설치하고 glut와 glew를 설치했습니다.glGenFramebuffers가 프로그램을 실행하지 못하게합니다

내 원래 프로그램은 방금 과다 사용했으며 방 주위에서 튀는 일부 구체를 보여줍니다. 내 문제는 일단 내가 줄에 추가하면

glGenFramebuffers(1, &myBuffer); 

내 프로그램이 실행되지 않습니다. 그것은 잘 컴파일됩니다. 하지만 실행하면 "Ass1.exe에 문제가있어서 프로그램을 종료해야합니다. 불편을 드려 죄송합니다."

이 줄을 주석으로 처리하면 공이 튀어 나와 잘 동작합니다. glGenFramebuffers는 설정 방법의 맨 아래에 있습니다.

여기 내 코드에 대한 링크입니다. https://dl.dropboxusercontent.com/u/13330596/Exercise1.cpp


이것은 내가 지금) (glewInit를 호출하기 직전에 코드입니다;

// Initialize GLUT. 
glutInit(&argc, argv); 

// Set display mode with an RGB colour buffer, double buffering and a depth buffer.. 
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH); 

// Set OpenGL window size 
glutInitWindowSize(1000, 1000); 

// Set position of OpenGL window upper-left corner 
glutInitWindowPosition(100, 100); 

// Create OpenGL window with title 
glutCreateWindow("Dissertation"); 


glewInit(); 

답변

2

확장 기능을 사용하려면 먼저 glewInit();으로 전화해야합니다. 아마도 함수 포인터가 여전히 널 포인터이기 때문에 아마 그렇게하지 않았을 것입니다. glewInit은 컨텍스트를 만들고 바인딩 한 후에 호출해야합니다. GLUT를 사용하는 경우 이것은 바로 뒤에 있습니다 glutCreateWindow(…);

+0

glewInit();을 추가했습니다. glutCreateWindow() 직후; 프로그램이 곧바로 충돌하는 대신 무언가가 깜박이고 충돌이 발생합니다. 약간의 진행처럼 보입니다 –

+0

@AdamKenworthy : 이제 문제를 디버그해야합니다. 모든 작업의 ​​stderr'fprintf (stderr, ...)'에 로그 상태를 출력하십시오. 또한 아직 모르는 경우 디버거 사용 방법을 익히십시오. 충돌 순간의 스택 백 트레이스를 얻는 것은 매우 유용합니다. – datenwolf

+0

디버그가 실제로 아무것도 표시하지 않기 때문에 너무 일찍 충돌합니다. 나는 창문의 플래시를보고 그게 전부다. glGenFramebuffers (1, & myBuffer)를 주석 처리하면; 정상적으로 실행되지만 그렇지 않으면 충돌합니다. –

관련 문제