ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OpenGL 4.5 강좌 - (2) 개발환경 셋팅하기
    OpenGL 2021. 1. 31. 02:04

    그럼 이제 OpenGL 4.5 개발환경을 한번 셋팅해 보겠습니다. 이 부분이 사실 가장 어려운 부분입니다 ㅎㅎ 하지만 찬찬히 읽고 차근차근 따라오신다면 사서 고생하지 않으셔도 될 것입니다.

    아, 참고로 맥은 OpenGL 4.5를 지원하지 않습니다. 왜냐고요? 애플은 OpenGL을 버리고 독자적인 그래픽 API인 "Metal"을 밀고 나가기로 결정했기 때문입니다. OpenGL의 서브셋인 OpenGL ES를 야메로 Metal로 번역하는 레이어도 존재하지만 여기서 다루지는 않겠습니다. 맥 사용자시라면 '어쩔 수 없이' 리눅스 또는 윈도우 가상머신을 사용해서 진행합시다.

    개발환경 셋팅하기

    1. 우선 CMake 최신 버전을 설치해 줍니다. 인터넷에 검색하면 훌륭한 설명들이 많으니 CMake에 대해서는 여기서 자세히 다루지는 않겠습니다.

    2. 그리고 GLFW도 설치해 줍니다. OpenGL은 드라이버와 소통하는 역할만 하지, OS에게 창을 만들라, 마우스 입력을 받아라, 등의 명령을 하는 일은 하지 않습니다. 이 일은 GLFW(Graphics Library Framework)이라는 라이브러리에게 맡깁시다. 라이브러리를 사용하지 않고 WinAPI와 같이 OS의 API를 직접 호출할 수도 있으나 이는 매우 번거롭고 OS간 호환이 되지 않습니다. GLFW 말고도 SDL, SFML, GLUT 등 비슷한 일을 하는 라이브러리들이 많지만 제가 GLFW를 선택한 이유는 그중에서 가장 가볍고 사용법이 간단하기 때문입니다. 저는 GLFW버전 3.3.2를 기준으로 설명드리겠습니다.

    OS별 설치 방법은 다음과 같습니다. Windows에서는 Visual Studio 2019를 기준으로 설명하겠습니다. 더 낮은 버전을 쓰시는 분들은 업그레이드해 주세요.

    Windows + Visual Studio 2019

    (1) GLFW 다운로드 페이지에서 Source Package를 선택하여 다운받습니다.

    (2) 아무데나 압축을 풀어 줍니다. 저는 glfw-3.3.2라는 폴더에 압축이 풀렸네요.

    (3) Visual Studio 2019를 실행합니다.

    (4) 시작 화면에서 "Open a local folder"를 선택합니다.

    (5) 방금 압축 푼 폴더 (glfw-3.3.2) 를 선택해서 열어줍니다.

    (6) 메뉴 -> Project (프로젝트) -> Generate Cache for GLFW를 선택합니다.

    (7) 메뉴 -> Build -> Build All 또는 단축키 Ctrl+Shift+B를 눌러줍니다.

    (8) 빌드가 완료되면 메뉴 -> Build -> Install GLFW를 눌러줍니다.

    (9) glfw-3.3.2/out/install/x64-Debug라는 폴더 안에 include와 lib라는 폴더가 생겼다면 설치 완료!

    Linux

    리눅스 유저시라면 평소대로 시스템 패키지 매니저를 통해 설치하는 것이 바람직합니다.

    3. 프로젝트 폴더를 편한 위치에 만듭니다. 저는 GLTutorial이라는 이름의 폴더를 만들었습니다. 이 폴더 안에 CMakeLists.txt라는 텍스트 파일을 만들고 아래 내용을 집어넣습니다.

    cmake_minimum_required(VERSION 3.17)
    
    project(GLTutorial)
    
    # Dependencies
    find_package(glfw3 REQUIRED)
    
    add_executable(${PROJECT_NAME} 
        src/main.cpp
        src/glad.c
    )
    
    target_include_directories(${PROJECT_NAME} PRIVATE "${CMAKE_SOURCE_DIR}/include")
    target_link_libraries(${PROJECT_NAME} glfw ${CMAKE_DL_LIBS})
    set_target_properties(${PROJECT_NAME} PROPERTIES
        CXX_STANDARD 17
        CXX_EXTENSIONS OFF
    )
    

    4. OpenGL 4.5 라이브러리 자체는 Windows 10 이상 또는 최신 버전 드라이버가 설치되어 있는 리눅스라면 기본적으로 제공해주지만, 개발을 위해서는 헤더 파일과 OpenGL API의 함수의 주소들을 불러와주는 로더가 필요합니다. 이를 위해 OpenGL 헤더 파일과 로더를 생성해주는 glad.dav1d.de 라는 사이트에 들어갑시다. 사이트에 들어가면 Language - C/C++, Specification - OpenGL, API - gl - Version 4.5, Profile - Core, 그리고 Extensions에서 "Add All" 버튼을 눌러 모든 확장 기능을 추가해 줍시다. 이렇게 하면 아래 그림과 같은 화면이 나와야 합니다. Options에는 "Generate a loader" 옵션만 선택된 채로 두고 Generate를 누릅니다.

    꼼꼼히 따라해 주세요

    그러면 아래와 같은 화면이 뜨는데, 생성된 파일들을 한꺼번에 glad.zip으로 다운받아줍니다.

    glad.zip을 클릭합니다.

    다운받은 glad.zip 파일을 프로젝트 폴더에 압축을 풉니다. 그럼 아래 같은 구조가 되겠죠:

    GLTutorial  (프로젝트 폴더)
    ├── CMakeLists.txt
    ├── include
    │   ├── glad
    │   │   └── glad.h
    │   └── KHR
    │       └── khrplatform.h
    └── src
        └── glad.c

    5. 이제 src 폴더 밑에 main.cpp 파일을 추가하고 아래 내용을 집어넣습니다.

    #include <iostream>
    
    #define GLFW_INCLUDE_NONE
    #include <GLFW/glfw3.h>
    #include <glad/glad.h>
    
    int main() {
        return 0;
    }
    

    이것으로 셋업은 다 마쳤으니 빌드를 해 봅시다.

    빌드하기

    Windows + Visual Studio 2019

    (1) Visual Studio 2019를 실행합니다.

    (2) 시작 화면에서 오른쪽의 "Open a local folder"를 선택합니다.

    (3) 프로젝트 폴더(GLTutorial)를 선택해서 엽니다.

    (4) 자동으로 CMake Generation이 되기를 기다립니다.

    (5) 에러가 뜰 것입니다. Project -> CMake Settings를 클릭합니다.

    (6) 스크롤을 내려 CMake variables and cache라는 곳으로 이동합니다.

    (7) glfw3_DIR 부분에 Browse... 버튼을 클릭합니다.

    (8) 폴더 선택 창에서 아까 2번 단계에서 생성되었던 glfw-3.3.2/out/install/x64-Debug/lib/cmake/glfw3 폴더를 선택해 줍니다.

    (9) Ctrl+S를 눌러 저장합니다. Output(출력) 패널에서 "CMake generation finished."가 뜨면 성공입니다.

    (10) Solution Explorer에서 src/main.cpp를 열어봅니다.

    (11) 메뉴 -> Build -> Build All 또는 단축키 Ctrl+Shift+B를 눌러 빌드합니다.

    (12) Ctrl+F5를 눌러 빌드한 실행 파일을 실행할 수 있습니다.

    Linux

    아래 명령들을 실행해서 빌드합니다.

    $ cd GLTutorial
    $ mkdir build; cd build
    $ cmake ..
    $ make

    명령 실행 후 build 폴더 안에 실행 파일이 들어 있다면 성공!

    다음 강좌에서는 창을 띄워 볼 예정입니다!

    댓글

Designed by Tistory.