OpenGL context์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆด Window ์์ฑํ๊ธฐ
→ GLFW ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ GLAD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉ
โ GLFW๋?
C๋ก ์์ฑ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก OpenGL ์ปจํ
์คํธ๋ฅผ ๋ง๋ค๊ณ , Window ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ํ๊ณ , ํ์ํ ์ฌ์ฉ์ ์
๋ ฅ์ ์ฒ๋ฆฌํ ์ ์๋ค.
โ GLFW์ ์ฅ๋จ์
์ฅ์ : ์คํ์์ค์ด๋ค, OpenGL์ ๊ฑฐ์ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
๋จ์ : ๋ฒํผ ๋ฑ UI๊ฐ ์๋ค, ๋ชจ๋ฐ์ผ์์ ์๋๋ค, ์ฐ๋ ๋ฉ์ด ์๋๋ค.
โ GLAD๋?
OpenGL ๋๋ผ์ด๋ฒ์ ๋ฒ์ ์ ๋ค์ํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ํจ์ ์์น๋ ๋ฐํ์์ ์ฒ๋ฆฌํด์ผ ํ๊ณ , ํ์ํ ๊ธฐ๋ฅ์ ์์น๋ฅผ ๋์ค์ ์ฌ์ฉํ๊ธฐ ์ํด ํจ์ ํฌ์ธํฐ์ ์ ์ฅํด ๋๋ ์ผ์ ๊ฐ๋ฐ์๊ฐ ํด์ผํ๋ค.
์ด ๋ GLAD ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฉ์ด์ง function์ ์์น๋ฅผ ์ฐพ์ ํจ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ฐ ๋์์ ์ค๋ค.
โ GLAD vs GLEW
๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชจ๋ ํ์ฅ์ ๋ค๋ฃจ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ฐจ์ด์ : GLAD๋ ํ์ํ ํจ์ ํฌ์ธํฐ๋ง ์ ํํ์ฌ ์ฌ์ฉํ ์ ์๊ณ GLEW๋ ์ ์ฒด OpenGL ํ์ฅ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์์ด ๋ฌด๊ฒ์ง๋ง ์ฌ์ฉ์ด ๊ฐํธํ๋ค.
โ GLFW ์ธํ
ํ๊ธฐ
โ GLFW ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ค์น
๋งํฌ : https://www.glfw.org/download.html
- ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์
1) ์์ค ํจํค์ง ์ค์น ํ ์ง์ ๋น๋ ๋ฐ ์ปดํ์ผ
2) pre-compiled ๋ฐ์ด๋๋ฆฌ ์ค์น (์ด ๋ฐฉ๋ฒ์ผ๋ก ์งํ)
* ํ๋ฆฌ ์ปดํ์ผ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ฐ์ ๋ ์์ ์ OS์ ์ปดํ์ผ ํ ๋์ ์ค์ ์ ํด๋นํ๋ ๋ฒ์ ์ GLFW๋ฅผ ์ค์นํ๋ค
(์ปดํ์ผ ์ Win32(x86)๋ก ์งํํ๋ค๋ฉด 32๋นํธ ๋ฒ์ ์ค์น)
โ ํ๋ก์ ํธ ์์ฑ
C++ ๋น ํ๋ก์ ํธ ์์ฑ (์๋ฃจ์
๋ฐ ํ๋ก์ ํธ๋ฅผ ๊ฐ์ ๋๋ ํฐ๋ฆฌ์ ๋ฐฐ์น ์ฒดํฌ ํด์ )
main.cpp ํ์ผ ์ถ๊ฐ
โ ํ๊ฒฝ ์ธํ
- ์๋ฃจ์
๋๋ ํ ๋ฆฌ๋ด์ Dependencies ํด๋๋ฅผ ๋ง๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํค๋ํ์ผ์ ๊ด๋ฆฌํ ๊ฒ.
1. ๋ค์ด๋ก๋ ๋ฐ์ GLFW ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค include ํด๋์ ๋น์ฃผ์ผ ์คํ๋์ค ๋ฒ์ ์ ๋ง๋ ํด๋๋ฅผ Dependencies/GLFW ํด๋์ ์ถ๊ฐ (dll : ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, lib : ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
2. ๋น์ฃผ์ผ ์คํ๋์ค์ ํ๋ก์ ํธ ์์ฑ ์์ ์ ๋ค์ด๊ฐ์
๊ตฌ์ฑ : ๋ชจ๋ ๊ตฌ์ฑ, ํ๋ซํผ : Win32 (+ ๊ตฌ์ฑ ๊ด๋ฆฌ์์์ ํ๋ก์ ํธ ์ปจํ
์คํธ์ ํ๋ซํผ์ Win32๋ก ์ค์ )
C/C++ > ์ผ๋ฐ ํญ์์ '์ถ๊ฐ ํฌํจ ๋๋ ํฐ๋ฆฌ'์ $(ProjectDir)Dependencies\GLFW\include\ ์
๋ ฅ
3. ๋ง์ปค > ์ผ๋ฐ ํญ์์ '์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํฐ๋ฆฌ'์ $(ProjectDir)Dependencies\GLFW\lib-vc2022 ์
๋ ฅ (๊ฐ์ ๋ฒ์ )
4. ๋ง์ปค > ์
๋ ฅ ํญ์์ ์ถ๊ฐ ์ข
์์ฑ์ glfw3.lib; opengl32.lib; User32.lib; Gdi32.lib; Shell32.lib ์
๋ ฅ
์ดํ ์ปดํ์ผํ๋ฉด https://www.glfw.org/documentation.html์ ์์ ์ฝ๋๋๋ก Window๊ฐ ์์ฑ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
โ GLAD ์ธํ
ํ๊ธฐ
GLAD๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๊ฒ์ด ์๋ ํ์ํ ์์ค์ฝ๋๋ฅผ ์์ฑํด์ ํ๋ก์ ํธ์ ๊ฐ์ ธ๊ฐ๋ ๊ฐ๋
์ด๋ค.
๋งํฌ : https://glad.dav1d.de/
1. ๋งํฌ์์ ์ํ๋ ๋ฒ์ ์ ์ ํํ ํ ์์ฑํ๋ค.
Language : C/C++
Specification : OpenGL
API - gl : Version 3.3 ์ด์
Profile : Core
Options : Generate a loader ์ฒดํฌ ํ Generate, zipํ์ผ ๋ค์ด๋ก๋
2. include ํด๋์ glad, KHR ๋ ํด๋๋ฅผ Dependencies์ include๋ก ์ด๋
3. glad.c ํ์ผ์ ์ง์ ์์ค์ ์ถ๊ฐ
(ํ๋ก์ ํธ ์ฐํด๋ฆญ > ์ถ๊ฐ > ๊ธฐ์กด ํญ๋ชฉ์์ glad.c ์ ํ)
์ดํ #include <glad/glad.h> ํค๋ํ์ผ ์ฌ์ฉ ๊ฐ๋ฅ
* glfw3.h ๋ณด๋ค glad.h๋ฅผ ๋จผ์ ์ ์ธํ์
'๐จ Graphics > ๐ต OpenGL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [OpenGL] Shader (2) | 2024.07.24 |
|---|---|
| [OpenGL] EBO (0) | 2024.07.18 |
| [OpenGL] ์ผ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ (0) | 2024.07.17 |
| [OpenGL] ์๋์ฐ ์์ฑ ๋ฐ ๋ ๋๋ง (0) | 2024.07.17 |
| [OpenGL] ๊ฐ์ (0) | 2024.07.10 |