들어가며
지난번 [Blueprint] VR 환경에서 HUD를 구성하는 방법 글에서 Learn OpenGL로 기초 그래픽스 지식을 쌓아가야겠다고 말한 적이 있다. 이를 위해 가끔 새벽에 일어나서 딱히 하고 싶은 게 없으면 Learn OpenGL 페이지를 읽고는 했는데 실습을 해보고 싶어서 이렇게 개발 환경을 구축하게 됐다.
솔직히 아직 Learn OpenGL 페이지를 읽을 때 감이 안 오는 부분이 대부분이긴 한데 그냥 계속 반복해서 읽고 실습하다 보면 언젠가 느낌이 오지 않을까?
그런 날이 오기를 바라며 OpenGL 개발 환경 구축에 대해 알아보도록 하자. 목차는 다음과 같다.
목차
- CMake 소개 및 설치
- GLFW 소개 및 설치
- CMake로 유저 환경에 맞는 GLFW 설정하기
- GLAD 소개 및 설치
- OpenGL 프로젝트 생성 및 설정
- 테스트
CMake 소개 및 설치
CMake는 유저의 환경에 맞는 프로젝트 파일(하나의 실행 파일을 생성하기 위해 개별 프로젝트의 소스 등을 묶어둔 파일)과 솔루션 파일(하나 이상의 프로젝트 파일을 묶어둔 파일)을 생성하기 위한 도구다. OpenGL 개발 환경 구축에서는 이후에 소개할 GLFW 라이브러리의 파일들을 유저 환경에 맞게 설정하기 위해서 사용한다.
우선 CMake 링크를 통해 설치부터 해보자.
Download CMake
You can either download binaries or source code archives for the latest stable or previous release or access the current development (aka nightly) distribution through Git. This software may not be exported in violation of any U.S. export laws or regulatio
cmake.org
페이지에 들어가면 다양한 버전이 있을 텐데 Binary distributions에서 본인 운영 체제와 시스템 종류에 맞게 다운로드하도록 하자. 본인은 Windows x64 Installer의 msi 파일로 Cmake를 설치했다.
Windows 운영 체제의 경우, 시스템 종류는 [Windows 버튼] - [시스템 정보] - [시스템 종류]에서 확인할 수 있다.
다운로드 받은 후, 실행해 보면 좌측 이미지와 같이 설치가 진행되는데 그냥 다 기본 값으로 설치하면 된다. 그럼 우측 이미지와 같은 CMake GUI를 확인할 수 있는데 이게 보인다면 설치가 완료된 것이다.
GLFW 소개 및 설치
GLFW는 Graphics Library Framework의 약자로, OpenGL 기반의 프로그램에서 윈도우(실행 창)를 생성하고 관리하는 데 사용된다. 쉽게 말해 OpenGL은 그래픽 렌더링만을 담당하고 별도로 윈도우를 생성하거나 이벤트를 처리하는 기능이 내장돼있지 않기 때문에, 윈도우를 생성하고, 유저의 입력과 같은 이벤트를 처리하기 위해 GLFW를 사용하는 것이다.
그럼 다음의 GLFW 링크를 통해 설치를 해보자.
Download
GLFW source code and binary distribution download links.
www.glfw.org
페이지에 들어가면 좌측 이미지와 같이 여러 가지 버튼이 보일 것이다. 여기서는 Source package 버튼을 눌러 해당 파일을 다운받도록 하자.
pre-compiled binaries 파일을 다운받아서 유저 환경에 맞는 설정을 직접 찾아도 되긴 하는데, 본 글에서는 Source package를 바탕으로 CMake를 통해 유저 환경에 맞게 설정할 예정이므로, 본 글을 따라 하려면 Source package를 다운받도록 하자.
설치 후 해당 파일을 압축 해제하면 우측 이미지와 같은 파일들을 확인할 수 있을 것이다.
CMake로 유저 환경에 맞는 GLFW 설정하기
GLFW를 설치했으면 이전에 설치한 CMake로 본인 환경에 맞게 설정할 필요가 있다. 먼저 CMake GUI를 열고 'Where is the source code'에는 GLFW의 root 폴더를, 'Where to build the binaries'에는 아무 폴더나 만들어서 넣도록 하자(나는 찾기 편하게 GLFW 내에 build라는 폴더를 만들어서 넣었다.).
추가로, GLFW 폴더의 경로는 어디든 상관 없다. 나는 뭐 접근 권한에 문제 될 수도 있을 것 같아서 C 드라이브에 넣었는데 어디에 있든 상관없는 것 같다.
아무튼 이렇게 경로를 설정하고, 하단의 Configure 버튼을 누르면 좌측 이미지와 같이 나온다. 여기서 'Specify the generator for this project'에 본인 개발 환경에 맞게 설정하고 Finish를 누르면 우측 이미지와 같이 생성할 파일 목록이 나오게 된다.
여기서 Generate 버튼을 누르면 위에서 'Where to build the binaries'로 설정한 경로에 아래 이미지와 같이 파일들이 생성된 걸 확인할 수 있다.
여기에서 GLFW.sln 솔루션 파일을 실행시킨 뒤 솔루션 빌드(기본 단축키 Ctrl + Shift + B)를 진행한다. 그럼 아래 우측 이미지와 같이 Debug 폴더가 생기고, 그 안에 glfw3.lib 생성되는 걸 확인할 수 있다.
GLAD 소개 및 설치
다음으로는 OpenGL 프로젝트를 생성하고, GLFW include 폴더와 library 파일 경로를 지정해 줘야 된다. 그런데, 어차피 GLAD 설치 후에도 또 경로 설정할 게 있으니 GLAD를 먼저 설치해 두도록 하자.
GLAD는 OpenGL Loader Generator로 OpenGL 확장 기능과 관련된 API를 로드하는데 사용되는 도구다. OpenGL은 다양한 버전과 그에 따른 다양한 드라이버에 맞게 구현이 되어있는데, 이로 인해 유저가 필요한 OpenGL 함수가 있다면 일일이 검색하고, 이후에 사용하기 위해서 함수 포인터에 저장하는 등의 번거로운 과정을 거쳐야 한다.
그러나 GLAD를 사용하면 이런 검색과 저장의 과정을 자동으로 처리하여 유저의 번거로움을 줄여준다고 한다.
그럼 GLAD에 대한 소개는 이쯤하고, GLAD 링크에서 설치를 진행해보도록 하자.
https://glad.dav1d.de/
gl Version 1.0Version 1.1Version 1.2Version 1.3Version 1.4Version 1.5Version 2.0Version 2.1Version 3.0Version 3.1Version 3.2Version 3.3Version 4.0Version 4.1Version 4.2Version 4.3Version 4.4Version 4.5Version 4.6None
glad.dav1d.de
다운로드 페이지에 들어가면 아래와 같은 양식을 확인할 수 있는데 Language는 C/C++로, API는 3.3 이상(Core profile 모드를 사용하기 위해서)으로, Profile은 Core로 설정한 뒤, Generate a loader를 체크하고 Generate 하도록 하자.
그럼 아래 좌측 이미지와 같이 파일 목록이 나오는데 여기서 glad.zip을 다운로드 받으면 된다. 이걸 압축 해제하면 아래 우측 이미지와 같은 파일들을 확인할 수 있다.
OpenGL 프로젝트 생성 및 설정
이제 프로젝트 생성과 설정만 남았다.
먼저 OpenGL을 사용할 빈 프로젝트를 C++ 기반으로 생성한다. 그리고, 이제 CMake와 GLFW에서 생성된 파일들 경로 지정을 해줘야 되는데 나는 알기 쉽게 프로젝트 폴더 내에 추가해 놨다. 아래 구조를 확인 바란다.
프로젝트 폴더의 include에 들어갈 파일들은 다음과 같다. GLFW의 include 폴더 내의 파일들과 glad의 include 폴더 내의 파일들을 프로젝트 폴더의 include로 옮긴다.
프로젝트 폴더의 lib에 들어갈 파일은 다음과 같다. GLFW에서 CMake로 생성한 [build]-[src]-[Debug]의 glfw3.lib 파일을 프로젝트 폴더 내 lib로 옮긴다.
그리고, glad의 src 폴더 내 glad.c는 다음과 같이 소스 파일 폴더에 붙여 넣도록 한다. 혹시 몰라 프로젝트 전체 구조도 첨부했으니 같이 확인 바란다.
이제 남은 건 경로 설정뿐이다. 우측 솔루션 탐색기에서 프로젝트 이름을 우클릭한 뒤, [속성]을 선택해 속성 페이지를 연다.
속성 페이지를 열었다면 VC++ 디렉터리를 선택해 [일반] - [외부 include 디렉터리]를 편집해 아래 좌측 이미지와 같이 아까 만든 include 폴더 경로를 추가한다. 그리고, 마찬가지로 [일반] - [라이브러리 디렉터리]를 편집해 아래 우측 이미지와 같이 아까 만든 lib 폴더 경로를 추가한다.
VC++ 디렉터리에 경로 추가가 끝났으면 이번에는 [링커] - [입력] - [추가 종속성]을 편집해 아래와 같이 glfw3.lib를 추가한다.
이제 모든 설정이 끝났다. 설정하느라 고생했다.
테스트
테스트는 Learn OpenGL의 Hello Window 페이지 코드를 그대로 사용해서 테스트해 봤다.
LearnOpenGL - Hello Window
Hello Window Getting-started/Hello-Window Let's see if we can get GLFW up and running. First, create a .cpp file and add the following includes to the top of your newly created file. #include #include Be sure to include GLAD before GLFW. The include file f
learnopengl.com
결과는 성공! 정상적으로 윈도우가 노출되는 걸 확인할 수 있다. 이제는 Learn OpenGL의 페이지를 이해해 가며 하나하나 실습하기만 하면 된다.
마치며
무언가 환경을 구축하는 글은 처음 쓰는 것 같다. 생각보다 오래 걸리긴 했는데 이제부터는 쭉 이해하고 실습하는 것만 남았으니 비교적 간단하게 할 수 있지 않을까? (부디.. 그러길 바랍니다..ㅋㅋ)
컴퓨터 그래픽스, 꼭 한 번 배워보고 싶었는데 이제 환경 구축이 끝났으니 시작할 준비가 끝났다고 할 수 있을 것 같다. 앞으로 천천히 마음이 동할 때마다 하나씩 이해하고 정리하도록 하자!
그럼 오늘의 글은 별도의 미사여구 없이 여기서 빠르게 마치도록 하겠다. 글을 쓰는 내내 환절기라 그런지 비염 때문에 재채기가 계속 나와서 어지러웠는데, 다들 환절기 조심하고 건강하길 바라며 글을 닫겠다.