뭘 공부하던 언제나 개발환경을 설정하는 것이 제일 힘들다.
GLEW 내려받기
GLEW는 The OpenGL Extenstion Wrangler Library의 약자로 OpenGL의 새로운 기능을 제공하는 헤더 파일이다.
GLEW 공식 홈페이지에서 내려받을 수 있다.
사이트가 영어로 되어있지만 상단의 Downloads에서 최근 버전을 내려받을 수 있다.
▼ Downloads의 최신 버전을 내려받으면 된다.
GLFW 내려받기
GLFW는 Graphics Library Framework의 약자로 윈도에서 OpenGL을 쉽게 구현할 수 있도록 도와준다.
원래라면 WinAPI를 이용하여 윈도 생성부터 해야하지만 GLFW는 이걸 간편하게 처리해주기 때문에 개발자 OpenGL 자체에만 집중하여 작업할 수 있다.
마찬가지로 GLFW 공식 홈페이지 다운로드 탭에서 내려받을 수 있다.
윈도우 환경에서 작업하니 Windows pre-compiled binaries에서 64bit를 내려받는다.
▼ 64bit 바이너리 파일을 내려받는다.
GLEW/GLFW 폴더 이름 정리
내려받은 폴더는 너무 이름이 길기 때문에 사용하기 편하도록 짧은 이름으로 변경한다.
나중에 비주얼 스튜디오에서 include와 link 할 때 편하다.
▼ 폴더 이름을 쓰기 쉬운 이름으로 변경한다.
라이브러리 폴더 만들어서 정리
내려받은 라이브러리를 새로 폴더를 하나 만들어서 정리한다.
폴더의 이름은 사람에 따라 다 다르게 정하는데 직관적으로 짓는 게 제일 좋다.
새로 만든 폴더에 GLEW 폴더와 GLFW 폴더를 넣어주고 본인이 관리하게 편한 위치에 둔다.
나는 개발용 SSD를 하나 따로 사용하기 때문에 언제나 그곳에 둔다.
▼ 위치가 짧을수록 편하다.
D:\Libs |
비주얼 스튜디오 새 프로젝트 생성
이제 실제로 개발할 비주얼 스튜디오의 설정을 시작한다.
학습할 때마다 새 프로젝트를 만들어서 개별로 실행할 수 있게 할 것이기 때문에 설루션의 이름을 잘 정해야 한다.
프로젝트를 여러 개 만들면 공부한 단계별로 편하게 코드와 실행을 할 수 있지만 프로젝트 속성을 매번 해줘야 하기 때문에 불편한 점도 있다.
어차피 공부하는 단계에서는 개발환경 설정하는 걸 익숙해질 수 있기 때문에 큰 문제가 되지는 않는다.
▼ 설루션은 큰 범위, 프로젝트는 빌드/실행할 단위로 지정하는 게 편하다
솔 루 션 : OpenGL 프로젝트 : 0_Init |
처음은 빈 화면만 만들 것이기 때문에 과감하게 0_Init으로 정한다.
비주얼 스튜디오 Include 설정
OpenGL이 CPP에 기본 내장된 것이 아니기 때문에 당연히 외부 라이브러리를 포함시켜줘야 한다.
나중에 이 귀찮은 작업을 컴퓨터에 따라 자동화하는 툴을 만들던가 해야겠다.
외부 라이브러리는 프로젝트 별로 설정할 수 있다.
비주얼 스튜디오 설루션 탐색기(Solution Explorer)에서 현재 프로젝트를 마우스 오른쪽 버튼을 누르면 나오는 팝업 메뉴 창에서 최하단의 속성(Properties)을 클릭한다.
▼ C/CPP 항목을 누르면 바로 오른쪽에 추가 포함 폴더 주소를 입력해줄 수 있다.
GLEW와 GLFW의 내부에 위치한 include 폴더 주소를 적어주면 된다.
▼ GLEW/GLFW의 include 폴더 주소
GLEW : (라이브러리 폴더 주소)\GLEW\include GLFW : (라이브러리 폴더 주소)\GLFW\include |
비주얼 스튜디오 Linker 설정
코드를 컴파일할 때마다 GLEW와 GLFW 코드까지 모두 컴파일하면 속도가 훨씬 많이 들 것이다.
그래서 미리 컴파일된 오브젝트 파일을 받아서 ' 연결 '해 줌으로써 우리가 작성한 코드만 컴파일 할 수 있도록 도와준다.
자세한 Linker에 대한 정보는 CPP에서 다시 한번 다뤄보고 지금은 개발환경설정에 집중하자.
▼ include와 같이 Linker 역시 library 추가 라이브러리 폴더 주소를 설정해준다.
▼ GLEW/GLFW의 library 폴더 주소
GLEW : (라이브러리 폴더 주소)\GLEW\lib\Release\x64 GLFW : (라이브러리 폴더 주소)\GLFW\lib-vc2019 |
주의해야 할 점은 GLFW는 현재 사용하고 있는 비주얼 스튜디오 버전을 맞춰줘야 한다.
비주얼 스튜디오 추가 종속성 설정
이제 링커에게 추가 종속성을 설정해줘야 한다.
종속성에 대해서는 아직도 이해가 잘 가지 않는다. 좀 더 시간 내서 살펴봐야 할 것 같다.
간단하게 생각하면 해당 Lib를 사용하면 추가해주는 것으로 보인다.
▼ Linker의 Input에서 추가 종속성을 설정해줄 수 있다.
▼ 지금 현재 추가할 종속성
opengl32.lib glew32.lib glfw3.lib |
dll 파일 옮기기
안타깝게도 아직 개발환경설정이 끝나지 않았다.
이제 dll 파일을 옮겨서 우리의 프로젝트 안에 복붙 해줘야 한다.
GLEW와 GLFW 각각 dll 파일이 위치한 곳은 아래와 같다.
▼ GLEW와 GLFW의 dll 파일 위치
GLEW : (라이브러리 폴더 주소)\GLEW\bin\Release\x64 GLFW : (라이브러리 폴더 주소)\GLFW\lib-vc2019 |
빈 윈도 생성 코드
이제 드디어 마지막 단계다.
개발환경설정이 잘 되었는지 확인해 볼 차례다.
GLEW/GLFW의 기본 예제 코드를 복붙 하여 확인해본다.
코드의 길이는 그렇게 길지 않지만 개발환경설정이 정상적으로 완료된 건지 확인하는 것뿐이기 때문에 코드 분석은 다음에 해보도록 하자.
▼ GLEW/GLFW 빈 화면 생성 코드
#include <cstdio>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
const GLint WIDTH = 800, HEIGHT = 600;
int main()
{
if (!glfwInit())
{
printf("GLFW Initialization Failed\n");
glfwTerminate();
return (1);
}
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
GLFWwindow* mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "OpenGL INIT", NULL, NULL);
if (!mainWindow)
{
printf("GLFW Window Creation Failed!\n");
glfwTerminate();
return (1);
}
int bufferWidth, bufferHeight;
glfwGetFramebufferSize(mainWindow, &bufferWidth, &bufferHeight);
glfwMakeContextCurrent(mainWindow);
glewExperimental = GL_TRUE;
if (glewInit() != GLEW_OK)
{
printf("GLEW Initialization Failed!\n");
glfwDestroyWindow(mainWindow);
glfwTerminate();
return (1);
}
glViewport(0, 0, bufferWidth, bufferHeight);
while (!glfwWindowShouldClose(mainWindow))
{
glfwPollEvents();
glClearColor(0.4f, 0.6f, 0.2f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(mainWindow);
}
return (0);
}
문제없이 코드가 컴파일되고 실행된다면 아래와 같은 창이 뜰 것이다.
▼ 코드 실행 결과
'<LIBRARY> > OPENGL' 카테고리의 다른 글
5. GLM 라이브러리 적용하기 (0) | 2021.01.19 |
---|---|
4. 삼각형 움직이기 (0) | 2021.01.17 |
3. 삼각형 그리기(2) (0) | 2021.01.17 |
2. 삼각형 그리기 (1) (0) | 2021.01.14 |
1. 기본 코드 작성하기 (0) | 2021.01.11 |
댓글