Console 기반으로 openGL 을 구동할때 glut 를 주로 사용합니다. (왜냐면 쉽고, 간편하니깐..^^;;)
사용법은 뭐 인터넷에 널리고 널렸으니, 생각할께요.
이때 glutMainLoop 를 통해서 종료 이벤트가 들어오기 전까지 계속 루프를 도는데, 여기서 루프를 종료 후, 후처리를 해야 하는 상황이 발생했습니다.
그래서 이리저리 알아 본 결과..
StackOverflow 사이트에서 답을 찾을 수 있었습니다.
▶ http://stackoverflow.com/questions/5033832/what-is-the-nicest-way-to-close-glut
▶ https://www.opengl.org/discussion_boards/showthread.php/136742-Exit-Main-Loop
첫번째 링크 타고 들어가셔서 보시면 아시겠지만, 귀찮으신 분들을 위해.. 무튼, 질문이 뭐 였었나면 GLUT를 가장 훌륭하게 닫는 방법이 뭘까? 였습니다.
그리고 이런 저런 댓글 중에 "나는 이 함수를 쓴다!" 라고 하면서
1 |
void glutLeaveMainLoop ( void ); |
cs |
이 함수를 적어 놨더군요.
그래서 이리저리 또 알아 본 결과, 이건 freeGlut 라고 해서 OpenGL을 대체 해서 (혹은 커버해서) 더 사용하기 편하게, 그리고 더 범용적으로 쓰기 위해 만든 라이브러리라고 합니다.
▶ http://freeglut.sourceforge.net/
▶ http://freeglut.sourceforge.net/docs/api.php#EventProcessing
아무튼, 여기서 freeGlut를 다운 받아서 CMake로 바이너리 빌드를 해주면, Visual studio 프로젝트 파일이 나옵니다.
그리고 해당 프로젝트 파일을 Visual studio 열어서 재빌드 해주면 끝 & 사용 준비 완료
아래 소스코드와 같이, 메인루프를 실행하기전에 glut 설정을 해주면 glutLeaveMainLoop() 를 통해 종료 후, 후처리를 할 수가 있습니다.
1
2
3
4 |
//Post-Process after kill glut's loop
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
//glut loop
glutMainLoop(); |
cs |
이로써 또 진도를 나가게 되었네요.
후담이지만, 매번 MFC로 작업하다가, 콘솔에서 간단히 작업하니깐 엄청 편하네요.
간단한 프로젝트는 앞으로 콘솔로 작업을 해야겠습니다. ㅎㅎ
기타 참고 한 사이트 :
▶ http://sourceforge.net/p/freeglut/bugs/224/
▶ http://colorscripter.com/info
'[ Topics ] > OpenGL' 카테고리의 다른 글
[OpenGL] Frame Rate (6) | 2013.08.03 |
---|