OpenGL( freeGLUT ) 코드를 Visual Studio 2015에서 컴파일 하기 위해서 필요한 작업을 진행해보았습니다.
빈 프로젝트 파일 생성
Visual Studio 2015를 실행시키고 메뉴에서 파일-새로 만들기-프로젝트를 선택합니다. 왼쪽 항목 중에 Win32를 선택하고 오른쪽 창에서 Win32 콘솔 응용프로그램을 선택합니다. 적당한 프로젝트 이름과 위치를 지정해 줍니다.
응용프로그램 마법사에서 응용 프로그램 설정할 때, 빈 프로젝트를 선택해주고 SDL은 체크 해제합니다.
왼쪽 프로젝트 창에서 소스 파일 항목을 선택한 후 마우스 오른쪽 버튼을 눌러 나오는 메뉴에서 추가 - 새 항목을 선택합니다. 새 항목 추가 창이 뜨면 C++ 파일(cpp)를 선택하고 이름을 main.cpp로 수정한 후 추가 버튼을 클릭합니다.
glew 라이브러리를 프로젝트 폴더로 복사
https://sourceforge.net/projects/glew/files/glew/에서 현재 최신 버전인 glew-2.0.0-win32.zip을 다운로드 받아 압축을 풀어 줍니다.
이후 중복되는 것을 피하기 위해서 경로를 일부만 적었습니다. 예를 들어 프로젝트관련 경로를 아래처럼 다 표시하는 대신에
C:\Users\webnautes-NoteBook\Documents\VC\glut_test\glut_test
사용자마다 달라질 수 있는 C:\Users\webnautes-NoteBook\Documents\VC\는 생락하고 프로젝트 폴더 이후부터 경로를 적었습니다.
glut_test\glut_test
glew 압축을 푼 폴더 glew-2.0.0-win32\glew-2.0.0\bin\Release\x64 경로에 있는 glew32.dll파일을 프로젝트 폴더 glut_test\x64\Debug 경로로 복사해줍니다.
프로젝트 폴더 glut_test\glut_test 경로에 library폴더를 생성한 후, glew 압축을 푼 폴더 glew-2.0.0-win32\glew-2.0.0\lib\Release\x64 경로에 있는 glew32.lib과 glews32.lib 파일을 복사하여 프로젝트 폴더 glut_test\glut_test\library 경로에 붙여넣어 줍니다.
glew 압축을 푼 폴더 glew-2.0.0-win32\glew-2.0.0 경로에 있는 include 폴더를 복사하여 프로젝트 폴더 glut_test\glut_test 경로에 붙여넣어 줍니다.
freeglut 라이브러리를 프로젝트 폴더로 복사
http://www.transmissionzero.co.uk/software/freeglut-devel/에서 freeglut MSVC Package를 다운로드 받아 압축을 풀어줍니다. 현재 버전은 3.0.0입니다.
freeglut 압축을 푼 폴더 freeglut-MSVC-3.0.0-2.mp\freeglut\bin\x64 경로에 있는 freeglut.dll 파일을 복사하여 프로젝트 폴더 glut_test\x64\Debug 경로에 붙여넣어 줍니다.
freeglut 압축을 푼 폴더 freeglut-MSVC-3.0.0-2.mp\freeglut\lib\x64 경로에 있는 freeglut.lib 파일을 복사하여 프로젝트 폴더 glut_test\glut_test\library경로에 붙여넣어 줍니다.
freeglut 압축을 푼 폴더 freeglut-MSVC-3.0.0-2.mp\freeglut 경로에 있는 include 폴더를 복사하여 프로젝트 폴더 glut_test\glut_test 경로에 붙여넣어 줍니다
프로젝트 설정
glew와 freeglut 라이브러리 관련 파일들을 프로젝트 폴더로 복사하면 다음과 같은 구조가 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | glut_test(프로젝트 폴더) │ glut_test.sln │ glut_test.VC.db │ ├─Debug ├─glut_test │ │ glut_test.vcxproj │ │ glut_test.vcxproj.filters │ │ main.cpp │ │ │ ├─Debug │ │ └─glut_test.tlog │ ├─include │ │ └─GL │ │ eglew.h │ │ freeglut.h │ │ freeglut_ext.h │ │ freeglut_std.h │ │ glew.h │ │ glut.h │ │ glxew.h │ │ wglew.h │ │ │ ├─library │ │ freeglut.lib │ │ glew32.lib │ │ glew32s.lib │ │ │ └─x64 │ └─Debug │ │ glut_test.Build.CppClean.log │ │ glut_test.log │ │ main.obj │ │ vc140.idb │ │ vc140.pdb │ │ │ └─glut_test.tlog │ CL.command.1.tlog │ CL.read.1.tlog │ CL.write.1.tlog │ glut_test.lastbuildstate │ link.command.1.tlog │ link.read.1.tlog │ link.write.1.tlog │ └─x64 └─Debug freeglut.dll glew32.dll glut_test.exe glut_test.ilk glut_test.pdb | cs |
Visual Studio 예전 버전(2008 ?) 사용시에는 DLL 파일들을 프로젝트 폴더 glut_test\glut_test 경로에 넣어주어야 Visual Studio에서 프로그램 실행시 DLL파일을 못찾는 다는 에러 없었던거 같은데..
지금 사용 중인 visual studio 2015에서 해보니 DLL파일을 프로젝트 폴더 glut_test\glut_test 경로에 넣어도 되고 실행파일이 생성되는 경로인 glut_test\x64\Debug 경로에 넣어도 되는 군요..
이제 Visual Studio의 상단에 있는 콤보박스의 x86을 x64로 변경합니다.
메뉴에서 프로젝트 - 속성을 선택한 후, 속성 페이지 창이 뜨면 왼쪽 항목에서 링커 - 일반을 선택합니다. 오른쪽 항목 중 추가 라이브러리 디렉터리를 선태하고 .\library를 추가해줍니다. main.cpp가 있는 폴더를 기준으로 라이브러리가 있는 폴더를 상대 경로로 적어 준 것입니다.
GLUT 예제 컴파일 및 실행 태스트
http://www.lighthouse3d.com/tutorials/glut-tutorial/animation/에 있는 예제 코드를 사용하여 테스트를 진행하였습니다.
프로젝트 속성에서 설정해주지 않아서 코드 상단 1~6줄은 GLUT 소스코드 마다 넣어주어야 합니다. 프로젝트 속성에서 추가해주셔도 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | //상대경로로 헤더파일을 지정합니다. #include ".\include\GL\freeglut.h" //사용할 라이브러리를 지정해줍니다. #pragma comment(lib, "freeglut.lib") #pragma comment(lib, "glew32.lib") void changeSize(int w, int h) { // Prevent a divide by zero, when window is too short // (you cant make a window of zero width). if (h == 0) h = 1; float ratio = w * 1.0 / h; // Use the Projection Matrix glMatrixMode(GL_PROJECTION); // Reset Matrix glLoadIdentity(); // Set the viewport to be the entire window glViewport(0, 0, w, h); // Set the correct perspective. gluPerspective(45.0f, ratio, 0.1f, 100.0f); // Get Back to the Modelview glMatrixMode(GL_MODELVIEW); } float angle = 0.0f; void renderScene(void) { // Clear Color and Depth Buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Reset transformations glLoadIdentity(); // Set the camera gluLookAt(0.0f, 0.0f, 10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f); glRotatef(angle, 0.0f, 1.0f, 0.0f); glBegin(GL_TRIANGLES); glVertex3f(-2.0f, -2.0f, 0.0f); glVertex3f(2.0f, 0.0f, 0.0); glVertex3f(0.0f, 2.0f, 0.0); glEnd(); angle += 0.1f; glutSwapBuffers(); } int main(int argc, char **argv) { // init GLUT and create window glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(320, 320); glutCreateWindow("Lighthouse3D- GLUT Tutorial"); // register callbacks glutDisplayFunc(renderScene); glutReshapeFunc(changeSize); glutIdleFunc(renderScene); // enter GLUT event processing cycle glutMainLoop(); return 1; } | cs |
실행시켜 보니 윈도우 안에서 삼각형이 회전하게 계속 반복됩니다. 별문제 없이 사용가능할 듯합니다. 혹 문제 발생하면 댓글로 알려주세요..
'OpenGL' 카테고리의 다른 글
OpenGL 강좌 - 삼각형이 회전하는 애니메이션 구현 (0) | 2016.12.20 |
---|---|
OpenGL 강좌 - 정사각형 그리기 (7) | 2016.12.20 |
Intel HD 4600에서 벌칸(Vulkan) API 사용해보기 (4) | 2016.11.15 |
Ubuntu 16.04에서 OpenGL( freeGLUT ) 프로그래밍 (2) | 2016.11.10 |
OpenGL Rendering Pipeline (1) | 2016.07.19 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!