반응형

아래의 설명은 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)

를 추가한다.






그리고 나서 빌드를 하고 실행해보면...!

이렇게 시뻘건 화면이! 

나온다!




반응형