아래의 설명은 Windows10 / Visual Studio 2015을 기준으로 합니다.
댓 바람에 떠오른 아이디어 때문에 이 비싼 책을(대략 43000원) 쿠폰과 마일리지 싹싹 긁어다가
35000원에 사서는 주말동안 예제 돌려보고 공부해보겠다고 시작했다가 얼마나 삽질을 했는지 모른다.
그 과정을 공유하고 이 포스팅을 읽게 되시는 분들은 부디 나보다 덜 삽질했으면 한다는 마음으로 적어본다.
먼저 www.hanbit.co.kr/exam/2204 에서 예제를 다운 받았을 것이다.
이 예제는 OS X, Windows, Linux에서 실행가능하게 되어 있는데.
내가 가장 먼저 한 삽질은.. vmware에서 돌릴려고 했다는 점이다.
Open GL이 그래픽 라이브러리고 각 그래픽 제조사 마다의 드라이버에 따라 크게 영향을 받게 될 것인데
아무런 셋팅 없이, 아무런 생각없이 습관적으로 가상머신에서 돌려볼려고 했다는게 얼마나 한심한지...
이 깨달음은 vmware에서 돌리려다 너무 열받아 홧김에 OS X에서 첫 시도만에 성공하고
OS X에서는 왜 이렇게 쉽게 돌려볼 수 있었는지 따져보다가 얻은 깨달음이다.
이 깨달음 이후로는 vmware에서 OpenGL 예제를 돌려볼 생각을 하지 않았다.
그럼에도 불구하고 vmware에서 OpenGL 예제를 돌려보겠다면
http://www.mesa3d.org/vmware-guest.html 여기 페이지에서 관련한 드라이버와 내용들을 숙지한다.
그럼 다시 하려든 이야기를 계속.
두번째. GLUT와 GLFW에 대한 무지.
OpenGL Super Bible 6th 에서는 GLFW 를 이용해서 윈도우 폼을 관리한다.
하지만 책에서는 오픈지엘 환경 구축에 대한 아무런 언급이 없기에
무작정 구글에서 Open GL 설치로 검색하게 되고 GLUT 설치 및 사용예제에 대한 설명까지 이른다.
혼돈의 카오스가 시작되는 것이다.
GLUT와 GLFW.
서로 각각 독립적으로 동작하는 라이브러리이다.
(GLUT 및 GLFW, GLEW 등의 라이브러리 관련해서는 여기 참고. http://growingdever.tistory.com/206 , https://ko.wikipedia.org/wiki/OpenGL)
그러니 OpenGL Super Bible 6th 예제를 실행해보기 위해서는
기본적으로 압축 예제 파일에 포함되어 있는 GLFW 라이브러리를 사용 할 수 있도록 삽질하는 것이 우선이다.
압축을 해제하고 sb6code-master 디렉토리에 HOWTOBUILD.txt 파일의 Windows 부분을 살펴보면 뭐 그냥 저냥 Visual Studio로 잘해보라고 적혀 있다.
vmware에서 우분투로 돌려보려다가 삽질한 경험이 있기 때문에 GLFW를 돌리기 위해 이 부분에서 어떻게 해야 하는지 알고 있다.
그래서 extern/glfw-2.7.6/support/msvc100에서 GLFW.sln을 실행한다.
그리고 GLFW 프로젝트가 시작프로젝트로 설정된 채로 빌드를 시작하면 에러가 뿜어져 나올 것이다.
GLFW 프로젝트 뿐만 아니라 GLFWDLL 프로젝트도 동일하게 빌드가 안된다.
그러면 빌드시 추가로 /FS 옵션을 넣으라는 것과 /Zl 옵션을 사용할 수 없다는 로그니 아래 처럼 바꾸도록 한다.
사실 대로 말한다.. 옵션의 의미는 정확히 모르겠다. 다만 빌드 에러시 발생하는 에러 로그에 따라 대처했을 뿐이다.
자, 이제 예제에서 GLFW 를 사용하기 위해 필요한 lib 파일과 dll 파일들이 (GLFW.lib, GLFW.dll, GLFWDLL.lib, GLFWDLL.dll) 생성 된 것을 확인 할 수 있다.
생성 위치는 extern/glfw-2.7.6/support/msvc100/Debug 이다.
이제 제대로 예제 프로그램들을 빌드해보도록 하자.
sb6code-master/ 위치에서 sb6_vs2013.sln 파일을 실행하자.
난 실행하자마자 simpleclear 프로젝트를 시작 프로젝트로 설정했다.
왜냐? 가장 단순한 프로젝트이니까. 그리고 책에서 제일 먼저 나오는 예제 소스니까.
이제 그럼 simpleclear에서 GLFW 를 사용하도록 프로젝트 속성을 수정하자.
Linker/Input > 추가 종속성에는 GLFW.lib, GLFWDLL.lib를 추가하고
VC++ Directories > 라이브러리 디렉토리에는 GLFW관련 lib, dll이 생성된 패스
(extern/glfw-2.7.6/support/msvc100/Debug)
를 추가한다.
그리고 나서 빌드를 하고 실행해보면...!
이렇게 시뻘건 화면이!
나온다!