upgrade๋ "๊ฒ์ ๊ฐ๋ฐ์๋ฅผ ์ํ 3D ๊ทธ๋ํฝ์ค, ์์ด๋, OpenGL" ์๋ฆฌ์ฆ ์คํ
์ ๊ท ๊ฐ์ ์ ์ฒญ์ ์๋ก์ด ์๋ฆฌ์ฆ๋ฅผ ์ด์ฉํ์๊ธฐ ๋ฐ๋๋๋ค.
- ๊ธฐ์กด "์์ฆ 1"์ (1) ~ (7) ๋ฒ ๊ฐ์๋ฅผ ์ด๋๋ก ์ ์งํ ์์ ์
๋๋ค.
- "์์ฆ 2"๋ "์์ฆ 1"์ (1) ~ (7)์ upgrade ํ๊ณ , ์๋ก (8), (9)๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
- "์์ฆ 1"์ (1) ~ (n) ๊น์ง ์๊ฐํ ๋ถ์ "์์ฆ 2"์ (n+1) ๋ถํฐ ๋ค์ผ์๋ฉด ๊ทธ๋๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
์ด๋ก ์ผ๋ก ๋ฐฐ์ฐ๊ณ , ์ฝ๋๋ก ๊ตฌํํ๋
3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ with OpenGL!
OpenGL์ ํ์ฉํ
3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ

- OpenGL ์์ด๋ ๋ญ๊ท์ง(GLSL)๋ก 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ์ ์ค๋ช
ํฉ๋๋ค.
- ๊ฒ์ ์์ง์์ ์ฌ์ฉ๋๋ 3D ๊ทธ๋ํฝ์ค์ ํต์ฌ ๊ธฐ๋ฅ์ GLSL ํ๋ก๊ทธ๋จ์ผ๋ก ์ง์ ๊ตฌํํฉ๋๋ค.
"OpenGL ์์ด๋ shader 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ" ๊ฐ์๋ GLSL ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด ์๋๊ฐ ์๋ 3D ๊ทธ๋ํฝ์ค๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค. ๋ค์ํ ์์ญ์์ ๊ด๋ฒ์ํ๊ฒ ์ฐ์ด๋ OpenGL ๊ธฐ๋ฐ์ผ๋ก 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ด๋ก ๊ณผ ์ค์ต์ ํจ๊ป ์ตํ ์ ์๋๋ก ๊ฐ์๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค.
๐ 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ฌ์ด ์์ผ์
จ๋ค๋ฉด, ์ด๋ฒ ๊ฐ์๋ฅผ ํตํด 3D ๊ทธ๋ํฝ์ค ๋ง์คํฐ์ ๋์ ํด ๋ณด์ธ์!
ํน์ ๋ด ์๊ธฐ ์๋๊ฐ์?

3D ๊ทธ๋ํฝ์ค ๊ธฐ์ด ์ด๋ก , 3D ์ขํ๊ณ, ์นด๋ฉ๋ผ ์๋ฎฌ๋ ์ด์
๋ฑ์ ์ฒด๊ณ์ ์ผ๋ก ๊ณต๋ถํ์๋ ค๋ ๋ถ

OpenGL๋ก ๊ฒ์ ๋ ๋๋ง ์์ง ๋ฑ, 3D ๊ทธ๋ํฝ์ค ์ถ๋ ฅ ํ๋ก๊ทธ๋จ์ ์์ฑํ์๋ ค๋ ๋ถ

PC, ํด๋ํฐ, ์น ๋ฑ์์ ๋๋ฃจ ์ฐ์ด๋ GLSL ์์ด๋ ๋ญ๊ท์ง๋ฅผ ์ดํดํ๋ ค๋ ๋ถ

๊ฒ์ ์์ง์ ๊ฐ์ข
์ฉ์ด ๋ฐ ์ค์ ํ๋ผ๋ฏธํฐ์ ์ ํํ ์๋ฏธ๋ฅผ ์ดํดํ๊ณ ์ถ์ผ์ ๋ถ
- โ
๊ธฐํํ ๊ฐ๋
๊ณผ ์์์ ๋ฐ๋ผ๊ฐ๋ค ๋ณด๋ฉด, ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ผ๋ก ์นด๋ฉ๋ผ๋ฅผ ์๋ฎฌ๋ ์ด์
ํด์ ์ ํํ ์ด๋ฏธ์ง๋ฅผ ๋ง๋ค์ด ๋ผ ์ ์์ต๋๋ค.
- โ
๊ฒ์ ์์ง์์ ์ฌ์ฉํ๋ ํ๋ผ๋ฏธํฐ๋ค์ ์ ํํ ์๋ฏธ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค.
3D ์ปดํจํฐ ๊ทธ๋ํฝ์ค ํต์ฌ 3-Step
ํํํ ๊ฐ๋
์ค๋ช
์ปดํจํฐ ๊ทธ๋ํฝ์ค ๊ธฐ์ด ๊ฐ๋
๋ถํฐ ์ํ์ ์ ๊ฐ ๊ณผ์ , ์ค์ ์ฝ๋๊น์ง ์ฐจ๊ทผ์ฐจ๊ทผ ํ์ํ ๊ฐ๋
์ ํ์ตํฉ๋๋ค.
์ค์ต์ ํ์!
ํ๋ถํ ํ๋ก๊ทธ๋๋ฐ ์ค์ต์ ํตํด ์ค์ ์๋ํ๋ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ํ๋ ๋ฐ๋ผํด๋ณผ ์ ์์ต๋๋ค.
์ค์ํ ๋ถ๋ถ์ ์ง์คํด์
์ด๋ฏธ ์ค๋ช
ํ ์์ค ์ฝ๋์ ๋ํด์๋ ์ค๋ณต ์ค๋ช
์ ์ต๋ํ ์ค์ด๊ณ , ๋ฐ๋์๊ฑฐ๋ ๊ฐ์กฐํด์ผ ํ ๋ถ๋ถ์ ์ง์คํ์ฌ ํ์ตํฉ๋๋ค.
OpenGL ์์ด๋ (0) shader 3D ๊ทธ๋ํฝ์ค
ํ์ต ๋ด์ฉ ์ดํด๋ณด๊ธฐ
์ด ๊ฐ์์์๋ (0) 3D ๊ทธ๋ํฝ์ค ์์คํ
์ด๋ ๋ฌด์์ธ์ง์ ๋ํด ํ์ตํ๊ฒ ๋ฉ๋๋ค.
์ปดํจํฐ ๊ทธ๋ํฝ์ค ๊ฐ๋
์ปดํจํฐ ๊ทธ๋ํฝ์ค ์นด๋ฉ๋ผ ๋ชจ๋ธ์ ์๋ฆฌ
ํ๋ก๊ทธ๋๋จธ๋ธ ํ์ดํ๋ผ์ธ ๋ชจ๋ธ
Q&A ๐ฌ
Q. ์ ๋ฃ ๊ฐ์์ ์๊ฐํ์ ์ด๋ค๊ฐ์?
์ ๋ฃ ๊ฐ์๊ฐ (1) ~ (7) ๋ก ์์ฐจ์ ์ผ๋ก ์คํ๋์ด์, ์๊ฐํ์ด ํฉ์ด์ ธ์๊ณ , ์์ง ๋น๊ณต๊ฐ์
๋๋ค. ์ ๋ฃ ๊ฐ์๋ ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์๊ฐํ๋ค์ ๋ฐ์์ต๋๋ค.
- ์ง๊ธ๊น์ง ๋ค์๋ OpenGL ๊ฐ์ ์ค ๊ฐ์ฅ ์ ์ ๋ฆฌ๋ ๊ฐ์๋ผ๊ณ ์๊ฐํฉ๋๋ค.
- ์ค๋ช
์ด ์์ธํ๊ณ ์น์ ํฉ๋๋ค. OpenGL ๊ณต๋ถํ๊ธฐ๊ฐ ์ด๋ ค์ ๋๋ฐ ๋ง์ ๋์์ ๋ฐ์์ต๋๋ค.
- (3D ๊ทธ๋ํฝ์ค ๊ด๋ จ๋ ์์๋ค์) ์์ ์์ฒด๊ฐ ์ด๋ ต์ง ์์๋ ๋์ถํด๋ด๋ ๊ณผ์ ์ด ์ดํดํ๊ธฐ๊ฐ ์ฝ์ง ์์๋ฐ ์์ธํ๊ฒ ์ค๋ช
ํด์ฃผ์
์ ์ดํด์ ๋์์ด ๋์ต๋๋ค.
Q. WebGL ๊ณผ๋ ์ด๋ค ๊ด๊ณ๊ฐ ์๋์?
WebGL ์ ์ด ๊ฐ์์์ ์ค๋ช
ํ๋ OpenGL ์ JavaScript ๋ฒ์ ์
๋๋ค.
OpenGL ์ ์๋ C/C++ ์ธ์ด์ฉ์ผ๋ก ๊ฐ๋ฐ๋์๊ณ , ์ด ๊ฐ์์์๋ C/C++ ์ธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํฉ๋๋ค. ๋์ค์ HTML5 ๊ฐ ๋์ค๋ฉด์, web์์ ์ฌ์ฉํ ์ ์๋ 3D ๊ทธ๋ํฝ์ค ํ์ค์ผ๋ก OpenGL ์ด ์ฑํ๋์๊ณ , JavaScript ์์ OpenGL ์ ์ฌ์ฉํ ์ ์๋๋ก, ์ผ๋ถ ๋ฌธ๋ฒ์ ๋ณ๊ฒฝํ ๊ฒ์ด WebGL ์
๋๋ค.
JavaScript๋ฅผ ์ฌ์ฉํ์๋ ๋ถ์ด๋ผ๋ฉด, ๊ธฐ๋ณธ ์ด๋ก ๊ณผ C/C++ ๊ธฐ์ค ์ค๋ช
์ด๋๋ผ๋ ์์ฉํ์๋๋ฐ ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. WebGL ์ ๊ณต๋ถํ ๋ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ฌธ๋ฒ์ด ์๋๊ณ , OpenGL / WebGL ์ ๊ธฐ๋ฅ, ๋ด๋ถ ๊ตฌ์กฐ, ์ํ ์ด๋ก , ๊ดํ ๊ณ์ฐ ๋ฑ์ธ๋ฐ, ๊ทธ ๋ถ๋ถ์ OpenGL ์ด๋ , WebGL ์ด๋ , ๋์ผํ ์ด๋ก ์ ๋ฐฐ์ฐ์
์ผ ํ๊ณ , ์ด ๊ฐ์์์ ์ ์ค๋ช
ํ๊ณ ์์ต๋๋ค. ์ค์ ๋ก ์ด ๊ฐ์๋ฅผ ๋ค์ผ๋ฉด์ WebGL ์ ๊ณต๋ถํ์๋ ๋ถ๋ค๋ ์์ผ์ญ๋๋ค.
Q. Vulkan ๊ณผ๋ ์ด๋ค ๊ด๊ณ๊ฐ ์๋์?
3D ๊ทธ๋ํฝ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถํ ์์๋ก๋ Vulkan ์ด OpenGL ์ดํ์ ๋์์ต๋๋ค๋ง, OpenGL ์ application programmer ์์ค์ ๋ง์ถ์๊ณ , Vulkan ์ ์ผ๋ถ system programmer ์์ค์ ๋ง์ถ ์ธก๋ฉด์ด ์์ต๋๋ค. ๊ทธ๋์, ๋ง์ ๊ฒฝ์ฐ์, Vulkan ์ ํ์ต ๋์ด๋๊ฐ ํจ์ฌ ๋๋ค๊ณ ์ด์ผ๊ธฐ ํฉ๋๋ค.
๋ง์ ๊ฒฝ์ฐ์, 3D ๊ทธ๋ํฝ์ค์ ๋ง์ ๊ฒฝํ์ด ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด, Vulkan ๋ณด๋ค๋ OpenGL ์ ๋จผ์ ๊ณต๋ถํ๊ณ , ์ถฉ๋ถํ ์ค๋น๊ฐ ๋์์ ๋, Vulkan ์ผ๋ก ์ ํํ์๊ธฐ๋ฅผ ๊ถํ๊ณ ์์ต๋๋ค. ์ค์ ๋ก ์ธ๊ตญ ์ฌ๋ก์์๋, Vulkan ๊ฐ์๋ ์ ๋ฌธ๊ฐ ๊ณผ์ ์ผ๋ก ๊ฐ์ค๋์ง, ์ด๋ณด์์ฉ์ผ๋ก ๊ฐ์ค๋๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ต๋๋ค.
Vulkan ๊ฐ์๋ ์ด๋ฒ OpenGL ๊ฐ์๊ฐ ์๊ฒฐ๋ ํ์, ์ ๋ฌธ๊ฐ ์ฌํ ๊ณผ์ ์ผ๋ก ๊ฐ์ค๋ ์์ ์
๋๋ค.
Q. ์ค์ต์ ํ์ํ ํ๋์จ์ด ์ฌ์์ ์ด๋ ์ ๋์ธ๊ฐ์?
OpenGL 3.3 ์ด์ ๋ฒ์ ์ ๊ธฐ์ค์ผ๋ก ์ค์ต์ ํ๊ฒ ๋ฉ๋๋ค. ์ต๊ทผ 5๋
์ด๋ด์ ๋ฐ์คํฌํ ๋๋ ๋
ธํธ๋ถ์ด๋ผ๋ฉด ์ค์ต์ ํฐ ์ง์ฅ์ ์์ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค. (NVIDIA ๋๋ AMD ๊ทธ๋ํฝ์นด๋ ๋ฐ ๊ทธ๋ํฝ ์นฉ์ด ์ฅ์ฐฉ๋ ๊ฒฝ์ฐ๊ฐ ์ข์ต๋๋ค. ์ต์ํ Intel GMA ๊ณ์ด์ด๋ผ๋ฉด ์ต๊ทผ ์นฉ๋ค์ด ์ข์ต๋๋ค.)
๋ค๋ง, ํ์ํ ๊ฐ๋ฐ์ฉ ์ํํธ์จ์ด๋ค์ ๊น์์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๋ค์ด์ผ ํ ํ์๋ ์์ต๋๋ค.
Q. ์ค์ต ํ๊ฒฝ์ผ๋ก ์ํํธ์จ์ด๋ฅผ ๊น์์ผ ํ๋์?
OpenGL 3.3 ์ด์์ด ์ง์๋๋ ๊ทธ๋ํฝ์ค ๋๋ผ์ด๋ฒ๋ฅผ ๊น์์ผ ํ๊ณ , GLFW, GLEW, GLM ๋ฑ์ ๊ณต๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ ์ค์นํด์ผ ํฉ๋๋ค. ๊ฐ์ ์ค๊ฐ์ ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๊ณ ์์ต๋๋ค๋ง, ๋จ์ํ exe ํ์ผ์ ํด๋ฆญํ๋ฉด ๊ทธ๋ฅ ๊น๋ฆฌ๋ ๋ฐฉ์์ ์๋๋๋ค. WIndows์ DLL ํด๋, Visual Studio ์ปดํ์ผ๋ฌ์ include ํด๋, lib ํด๋์ ๊ฐ๊ฐ ํ์ํ ๊ฒ๋ค์ ์ค์นํด์ผ ํฉ๋๋ค. (๋ฆฌ๋
์ค์์๋ apt ๋ช
๋ น์ผ๋ก ์ค์น ๊ฐ๋ฅํฉ๋๋ค.)
Q. ์๊ฐ ๊ธฐํ์ ์ค์ ํ๋ ์ด์ ๊ฐ ์๋์?
์๊ฐ ๊ธฐํ์ ์ค์ ํ ๊ฒ์, ์ปดํจํฐ ๋ถ์ผ ํน์ฑ์ ๊ทธ ์ ๋์ ์๊ฐ์ด ์ง๋๋ฉด ์ด ๊ฐ์ ๋ด์ฉ์ด ์ด๋ฏธ ์๋ ์ด์ผ๊ธฐ๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๊ธฐ ๋๋ฌธ์
๋๋ค.
๊ทธ๋์ฏค์, ์๋ก์ด ๊ฐ์์์ ๋ค์ ์ฐพ์๋ต๊ฒ ์ต๋๋ค. ๐
Q. ๋์์์ ์๋ง์ด ๋ค์ด๊ฐ ์๋์?
์ผ๋ถ ์์
์์์๋ ์๋ง์ด ๋ค์ด๊ฐ ์์ต๋๋ค๋ง, ๋๋ถ๋ถ ์๋ง์ ์ง์ํ์ง ์์ต๋๋ค. ์๋ง์ด ์๋ก ์ ์๋ ๊ฒฝ์ฐ ์๋ง์ด ์๋ ์์์ผ๋ก ์๊ณ ์์ด ๊ต์ฒดํ ์๋ ์์ต๋๋ค.
๐ข ์๊ฐ ์ ํ์ธํด์ฃผ์ธ์!
- ์ด ๊ฐ์๋ "OpenGL ์์ด๋ shader 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ" ์๋ฆฌ์ฆ๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ๊ธฐ ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๊ฐ์๋ก, ์ ๋๋ฉ์ด์
์ ์๋ฆฌ๋ฅผ ์์๋ณด๊ณ 3D ์ขํ๊ณ์ ๊ธฐ์ด๋ฅผ ํ์ตํฉ๋๋ค.
- ๊ฐ์๋ Windows 10/11 ์ด์์ฒด์ + Visual Studio 2019/2022 C++ ์ปดํ์ผ๋ฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ช
ํฉ๋๋ค.
- ํ์ต ๋ด์ฉ์ ๋ง์ถฐ ๊ฐ์์ ์ฐ์ธ PPT๋ฅผ PDF ํ์ผ๋ก ์ ๊ณตํฉ๋๋ค.
- ๊ฐ์ ์์ ๋ฐ PDF ํ์ผ์ ์ฌ์ฉํ ๊ทธ๋ฆผ ๋ฐ ์ฌ์ง ์ค ์ผ๋ถ๋ Public Domain์ด ์๋๋ผ ๋ณ๋์ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฐ๋ก ์ ์๊ถ์๋ก๋ถํฐ ์ง์๊ณต์ ์๊ฐ ์ ํ๋ ์ฌ์ฉ ํ๊ฐ๋ฅผ ๋ฐ์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋ง์ฝ ๋ค๋ฅธ ๋ถ๊ป์ ์ฌ์ฉํ์๋ ค๋ฉด ๋ฐ๋์ ์์ ์๊ถ์์ ์ฌ์ฉ ํ๊ฐ๋ฅผ ๋ฐ์ผ์
์ผ ํฉ๋๋ค. ์ฃผ์ํ์๊ธฐ ๋ฐ๋๋๋ค.
- PDF์ ์ฐ์ธ ํ๊ธ ํฐํธ๋ก๋ "๋ณธ๊ณ ๋" Noto Sans KR, ์๋ฌธ ํฐํธ๋ก๋ Source Sans Pro ๋ฐ Source Serif Pro๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ๋งํฌ๋ฅผ ํตํด ๋ชจ๋ ๋ฌด๋ฃ๋ก ๋ด๋ ค๋ฐ์ผ์ค ์ ์์ต๋๋ค.