시작하기에 앞서 몇가지 알려드립니다
먼저 제 환경은 윈도우7 64bit 이며, IDE는 MS VisualStudio 2015 Community v.14 를 사용합니다.
또한 필자가 매.우. 게으르므로 이 시리즈는 연재따위가 아니며 다음 링크의
http://in2gpu.com/2014/10/17/creating-opengl-window/
OpenGL 강의를 읽어보면서 정리한 글입니다.
자 시작해 봅시다.
OpenGL 라이브러리만 가지고 윈도우에서 OpenGL을 개발할 순 있습니다만 그러기 위해선 전반적인 winAPI 의 지식이 필요합니다.
그러므로 여기에선 그래픽 로직에만 집중할 수 있도록 FreeGLUT, GLEW 를 이용하여 예제를 작성합니다.
얘네들이 뭐하는건지는 아래 갓택오버플로우에 답변이 이미 올라와 있네요
요약하자면 다음과 같습니다.
OpenGL: 2D 및 3D 그래픽을 렌더링하기 위한 크로스플랫폼 API 입니다.
GLUT: OpenGL Utility Toolkit 은 windows 환경에서 마우스와 키보드 컨트롤을 도와주는 라이브러리. win API 해보신분들은 아시겠지만 윈도우폼을 만들고 I/O 이벤트를 컨트롤 하는건 복잡하고 여간 귀찮은 일이죠.
GLEW: OpenGL Extension Wrangler Library 은 OpenGL의 확장기능들을 불러오고 사용할 수 있도록 도와주는 크로스플랫폼 라이브러리 입니다.
먼저 FreeGLUT를 설치해 봅시다. 아래링크에서 최신 안정 버전을 다운로드합니다.
http://freeglut.sourceforge.net/
GLUT와 FreeGLUT 라는 용어를 혼용하고 있어서 헷갈릴 수도 있는데 구분을 하자면 GLUT가 1998년을 마지막으로 개발자가 더 이상 업데이트를 하지않는데다 라이선스도 공개용이 아니라 사용에 문제가 있어서 X-Consortium 라이선스로 GLUT와 호환성을 유지하여 만든 것이 바로 FreeGLUT 입니다. 이하의 글에서 GLUT 라고 칭하는 것들은 모두 FreeGLUT 를 의미하는 것임을 유의해 주세요.
현재 3.0.0 버전이 최신 안정 버전이네요.
음.... 다운받아보니 뭔가 정체 모를 파일들이 많이도 있네요...
받은 압축파일은 소스코드이므로 컴파일을 해야 합니다
README 파일에 친절히 설명이 다 되어있네요.
순서대로 따라해봅시다
아래 링크에서 cmake를 다운받습니다.
http://www.cmake.org/cmake/resources/software.html
링크에 들어가보면 버전에 따라 설치버전과 포터블버전을 다운 할 수 있습니다
현재 cmake 최신 버전은 3.6.2 이며 저는 포터블버전인 cmake-3.6.2-win64-x64.zip 를 다운받았습니다.
압축을 풀고.... bin/cmake-gui.exe 를 실행 시킵니다.
Where is the source code 부분에는 freeglut 소스코드를 압축해제한 폴더를 설정해줍니다.
Where to build the binaries 에는 솔루션을 생성할 폴더를 지정합니다. 폴더이름은 freeglut로 해줍시다.
그리고 나서 왼쪽 아래 부분에 Configure을 누르고 현재 자신의 컴퓨터에 설치되어있는 VS 버전을 고릅니다. 저의 경우 Visual Studio 14 2015 이며, 이는 VisualStudio 를 키시고, 도움말 > Microsoft Visual Studio 정보 창에서 확인 할 수 있습니다.
Finish 를 누르면 configure 프로세스가 진행됩니다.
저는 DEMO 와 정적파일은 필요없으니 체크 해제하고 솔루션을 생성하였습니다.
아무래도 정적파일로 생성하면 예제프로그램들 빌드할 때 무거워질거 같아서...
Generate를 누르면 지정한 output 폴더에 VS 솔루션이 생성됩니다.
자 그럼 freeglut/freeglut.sln 을 엽니다.
빌드 단축키 F7을 눌러 빌드!
에러없이 빌드가 완료되면 freeglut/bin/Debug/freeglutd.dll 파일이, freeglut/lib/Debug/freeglutd.lib 파일이 각각 생성됩니다.
이 동적라이브러리 파일과 헤더파일을 프로젝트에 포함시켜 주어야 합니다.
VS의 기본 인클루드패스에 위 파일들을 복사해 넣거나 프로젝트 설정에서 패스를 추가로 설정해 주어야 합니다.
header include 경로에 압축해제한 폴더중 include 밑에 있는 GL 폴더를 폴더 째로
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include 밑에 복사합니다.
빌드한 freeglutd.lib 파일은
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib 폴더 밑에 넣고,
freeglut.dll 파일은
C:\Windows\SysWOW64 폴더와
C:\Windows\System32 폴더에 각각 복사해 넣습니다.
참고로 어플리케이션의 DLL 검색 순서는 다음과 같습니다
https://msdn.microsoft.com/ko-kr/library/7d83bc18.aspx
후... 다음으로 glew를 설치해보도록 하죠
아래 링크에서 최신 릴리즈 소스파일을 다운받습니다. 현재 2.0.0가 최신이군요.
압축을 풀어보니 이것도 뭔가 이것저것 담겨 있군요.
build/vc12 폴더에 있는 VS 솔루션을 엽니다.
솔루션 버전과 현재 사용하고 있는 VS 버전이 다른데 프로젝트를 업그레이드할 것이냐고 물어보는데 OK를 눌러서 프로젝트를 업그레이드하고 F7 키를 눌러 빌드를 합니다.
빌드가 성공하면 bin/Debug 폴더와 lib/Debug 폴더 밑에 각각 dll 파일과 lib 파일이 생성되어 있을 겁니다.
이 두 파일과 함께 include/GL 내의 헤더파일들을 적당한 곳에 넣어줍니다.
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\GL 에 헤더파일들을
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib 에 glew32d.lib 파일을
C:\Windows\SysWOW64 폴더와
C:\Windows\System32 폴더에 glew32d.dll 파일을 넣습니다.
후... 드디어 설치가 끝났군요. 뭐 사실 파일들을 저렇게 뿔뿔이 넣지 않고 한폴더에 모아서 예제프로젝트 내에서 패스 설정만 해줘도 되지만 전 이렇게 하고 싶었어요 데헷.
자 이제 예제 프로그램을 만들어 봅시다.
VS 에서 빈프로젝트를 만들고 Alt+F7 을 눌러 프로젝트 설정을 엽니다
링커 > 입력 > 추가 종속성 을 열고
opengl32.lib
glew32d.lib
freeglutd.lib
을 넣어줍시다
확인을 누르고 다음 코드를 복붙한 후 실행시켜 봅시다.
#include <GL/glew.h> #include <GL/freeglut.h> #include <iostream> void renderScene(void) {} int main(int argc, char **argv) { glutInit(&argc, argv); glutInitWindowPosition(50, 50);//optional glutInitWindowSize(800, 600); //optional glutCreateWindow("OpenGL First Window"); // register callbacks glutDisplayFunc(renderScene); glutMainLoop(); return 0; }
오... Nice boat...
빈창하나와 콘솔창 하나가 뜰텐데 에러가 없다면 여기까지 잘 따라오신겁니다.
지금까지 위에서 설명한 방법은 소스코드를 직접 다운받아서 컴파일하고 사용하는 방법인데 애초에 컴파일된 파일을 다운받거나 VS내의 NuGet 매니저를 사용하는 방법도 있습니다.
컴파일된 파일을 다운받아서 사용하는 것은 위에서 설명한 과정중 컴파일하는 과정만 빼고 같으니 생략하고 NuGet 매니저를 사용하는 방법을 간략하게 설명하겠습니다.
빈 프로젝트를 만드시고 프로젝트 > NuGet 패키지 관리 를 선택합니다.
nupengl.core 를 검색하고 설치합니다.
그리고 앞의 코드를 빌드 및 실행 ㅇㅅㅇ
NuGet 패키지 관리자를 사용하니까 정말 편하네요(직접 사용해보진 않았지만 말입니다 하하하하)
'잡것 > OpenGL' 카테고리의 다른 글
[OpenGL 02] 셰이더를 적용해 봅시다. (0) | 2016.10.07 |
---|---|
[OpenGL 01] OpenGL로 윈도우에 무언갈 출력해 봅시다. (0) | 2016.10.04 |