root/
├── build/
├── external/
├── resource/
├── src/
└── CMakelists.txt
resource/는 제 취향입니다. 텍스쳐 파일을 한데 정리해서 넣기 위해 만들었습니다. 필요없다고 생각하면 하지맙시다.
이 프로젝트는 다음 라이브러리에 의존성이 있습니다:
| 라이브러리 명 | 디렉토리 명 | 목적 | 참조 | 비고 |
|---|---|---|---|---|
| {fmt} | fmt/ | 형식화된 텍스트 출력에 사용합니다. | Repository | |
| GLAD | glad/ | OS 플랫폼 독립적으로 OpenGL을 사용할 수 있도록 합니다. (더 편하게 OpenGL 개발을 할 수 있습니다. 😅) | link | gl 버전을 4.3 이상으로 설정한 후 generate 하십시오 |
| GLFW | glfw/ | 윈도우 생성, 입력 이벤트 리스닝 등을 위해 사용합니다. | Repository | |
| GLM | glm/ | 벡터, 행렬 등의 객체 생성 및 계산에 사용합니다. | Repository | |
| stb | stb/ | 텍스쳐 출력을 위해 이미지를 파일시스템으로부터 읽어들일 때 사용합니다. | Repository |
external/ 폴더 밑에 git submodule add [git repo url] [directory name]으로 glad를 제외한 모든 라이브러리에 대해 명령어를 수행합니다.
glad는 generate하여 내려 받은 파일을 압축 해제 하여 안의 내용물을 glad/ 폴더를 만들어 하위에 집어넣습니다. 해당 절차가 끝나면 glad/ 디렉터리의 구조는 다음과 같습니다.
glad/
├── include/
│ ├── glad/
│ │ └── glad.h
│ └── KHR/
│ └── khrplatform.h
└── src/
└── glad.c
root/src/ 디렉터리에 main.cpp를 추가합니다. 사용합니다.
앞서 모든 설정이 끝났다면 디렉터리 구조는 다음과 같아집니다.
root/
├── build/
├── external/
│ ├── fmt/
│ ├── glad/
│ ├── glfw/
│ ├── glm/
│ └── std/
├── resource/
├── src/
└── CMakelists.txt
- 의존성 설정이 모두 끝난 경우에는
root/bulid/폴더로 이동해서cmake -G Ninja ..명령어를 수행하여 빌드합니다. 1-1. 빌드 중 나타난 에러를 해결하거나 코드 변경 후 빌드를 하려면Ninja를 수행합니다. - 성공적이라면
build/디렉터리 밑에minig.exe파일이 생성됩니다. 실행해봅니다.
WIP
<style> .table thead th { border-bottom: none; } .table tbody tr:first-child td { border-top: none; } </style>| namespace | 클래스 | 목적 | 사용 | 추가 작업 |
|---|---|---|---|---|
| minig | ApplicationWindow | GLFW 래퍼 클래스. 윈도우를 생성하기 위한 GLFW 컨텍스트와 GLAD 라이브러리를 초기화합니다. | ||
| minig | Graphical | OpenGL를 사용한 어플리케이션의 메인 루프. | ||
| minig | EventHandler | GLFW 입력 이벤트 콜백 래퍼 클래스. | ||
| minig | ShaderProgram | OpenGL의 셰이더 컴파일 및 링크 과정에 대한 래핑. | ||
| minig | Colored | 내용 F | ||
| minig | Textured | 내용 F |