โ ์ ์ฒด (1) ~ (7)์ ์๋ฆฌ์ฆ ์ค, (4) ์ขํ ๋ณํ, ํ์ , ๊ฐ์ ํธ๋๋ณผ, VBO, IBO โ OpenGL, 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ, ๊ธฐ์ด ์ด๋ก ๋ถํฐ โ ๊ณ ๊ธ GLSL ์์ด๋ ์ฝ๋ (๋ฒกํฐ, ํ๋ ฌ, ๋ธ๋ฆฐ-ํ ์์ด๋ฉ, ํ ์ค์ฒ ๋งคํ) ๊น์ง ๋ค๋ฃน๋๋ค.
๊ฒ์ ์์ง / ํด๋ผ์ด์ธํธ ๋จ์ 3D ๊ทธ๋ํฝ์ค ํต์ฌ ๊ธฐ๋ฅ
3D ๊ทธ๋ํฝ์ค ๊ธฐ์ด ์ด๋ก + ์์ + ์์ด๋ ๊ตฌํ ์ฝ๋
OpenGL ์์ด๋ ๋ญ๊ท์ง (GLSL) + ๊ฒ์์์ง ์๊ณ ๋ฆฌ์ฆ
์ด ๊ฐ์๋ - ํํธ (4) ์ขํ ๋ณํ, ํ์ , ๊ฐ์ ํธ๋๋ณผ, VBO, IBO
์ด๋ก ์ผ๋ก ๋ฐฐ์ฐ๊ณ , ์ฝ๋๋ก ๊ตฌํํ๋
3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ with OpenGL!
"OpenGL ์์ด๋ shader 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ" ๊ฐ์๋ GLSL ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด ์๋๊ฐ ์๋ 3D ๊ทธ๋ํฝ์ค๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค. ๋ค์ํ ์์ญ์์ ๊ด๋ฒ์ํ๊ฒ ์ฐ์ด๋ OpenGL ๊ธฐ๋ฐ์ผ๋ก 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ด๋ก ๊ณผ ์ค์ต์ ํจ๊ป ์ตํ ์ ์๋๋ก ๊ฐ์๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค.
๐ 3D ๊ทธ๋ํฝ์ค ํ๋ก๊ทธ๋๋ฐ์ ๊ด์ฌ์ด ์์ผ์ จ๋ค๋ฉด, ์ด๋ฒ ๊ฐ์๋ฅผ ํตํด 3D ๊ทธ๋ํฝ์ค ๋ง์คํฐ์ ๋์ ํด ๋ณด์ธ์!
3D ๊ทธ๋ํฝ์ค ๊ธฐ์ด ์ด๋ก , 3D ์ขํ๊ณ, ์นด๋ฉ๋ผ ์๋ฎฌ๋ ์ด์ ๋ฑ์ ์ฒด๊ณ์ ์ผ๋ก ๊ณต๋ถํ์๋ ค๋ ๋ถ
OpenGL๋ก ๊ฒ์ ๋ ๋๋ง ์์ง ๋ฑ, 3D ๊ทธ๋ํฝ์ค ์ถ๋ ฅ ํ๋ก๊ทธ๋จ์ ์์ฑํ์๋ ค๋ ๋ถ
PC, ํด๋ํฐ, ์น ๋ฑ์์ ๋๋ฃจ ์ฐ์ด๋ GLSL ์์ด๋ ๋ญ๊ท์ง๋ฅผ ์ดํดํ๋ ค๋ ๋ถ
๊ฒ์ ์์ง์ ๊ฐ์ข ์ฉ์ด ๋ฐ ์ค์ ํ๋ผ๋ฏธํฐ์ ์ ํํ ์๋ฏธ๋ฅผ ์ดํดํ๊ณ ์ถ์ผ์ ๋ถ
ํํํ ๊ฐ๋ ์ค๋ช
์ปดํจํฐ ๊ทธ๋ํฝ์ค ๊ธฐ์ด ๊ฐ๋ ๋ถํฐ ์ํ์ ์ ๊ฐ ๊ณผ์ , ์ค์ ์ฝ๋๊น์ง ์ฐจ๊ทผ์ฐจ๊ทผ ํ์ํ ๊ฐ๋ ์ ํ์ตํฉ๋๋ค.
์ค์ต์ ํ์!
ํ๋ถํ ํ๋ก๊ทธ๋๋ฐ ์ค์ต์ ํตํด ์ค์ ์๋ํ๋ ์์ค ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ํ๋ ๋ฐ๋ผํด๋ณผ ์ ์์ต๋๋ค.
์ค์ํ ๋ถ๋ถ์ ์ง์คํด์
์ด๋ฏธ ์ค๋ช ํ ์์ค ์ฝ๋์ ๋ํด์๋ ์ค๋ณต ์ค๋ช ์ ์ต๋ํ ์ค์ด๊ณ , ๋ฐ๋์๊ฑฐ๋ ๊ฐ์กฐํด์ผ ํ ๋ถ๋ถ์ ์ง์คํ์ฌ ํ์ตํฉ๋๋ค.
์ด ๊ฐ์์์๋ (4) ์ขํ ๋ณํ, ํ์ , ๊ฐ์ ํธ๋๋ณผ๋ค์ ์๊ฐํ๊ณ , VBO, IBO ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ์ ํฉ๋๋ค.
์ขํ ๋ณํ
ํธ๋๋ณผ ๊ตฌํ
ํคํ๋ ์ ์ ๋๋ฉ์ด์
Q. ์ ๋ฃ ๊ฐ์์ ์๊ฐํ์ ์ด๋ค๊ฐ์?
์ ๋ฃ ๊ฐ์๊ฐ (1) ~ (7) ๋ก ์์ฐจ์ ์ผ๋ก ์คํ๋์ด์, ์๊ฐํ์ด ํฉ์ด์ ธ์๊ณ , ์์ง ๋น๊ณต๊ฐ์ ๋๋ค. ์ ๋ฃ ๊ฐ์๋ ํ์ฌ ๋ค์๊ณผ ๊ฐ์ ์๊ฐํ๋ค์ ๋ฐ์์ต๋๋ค.
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. ๋์์์ ์๋ง์ด ๋ค์ด๊ฐ ์๋์?
์ผ๋ถ ์์ ์์์๋ ์๋ง์ด ๋ค์ด๊ฐ ์์ต๋๋ค๋ง, ๋๋ถ๋ถ ์๋ง์ ์ง์ํ์ง ์์ต๋๋ค. ์๋ง์ด ์๋ก ์ ์๋ ๊ฒฝ์ฐ ์๋ง์ด ์๋ ์์์ผ๋ก ์๊ณ ์์ด ๊ต์ฒดํ ์๋ ์์ต๋๋ค.
๐ข ์๊ฐ ์ ํ์ธํด์ฃผ์ธ์!
ํ์ต ๋์์
๋๊ตฌ์ผ๊น์?
3D ๊ทธ๋ํฝ์ค ๊ธฐ์ด, ์นด๋ฉ๋ผ ์ค์ , ์์ด๋ฉ
๊ฒ์ ์์ง์ ์ค์ , ์ฉ์ด, ํ๋ผ๋ฏธํฐ ์ดํด
OpenGL 3D ๊ทธ๋ํฝ์ค ์ถ๋ ฅ ์ค์ ์ฝ๋ฉ
GLSL ์์ด๋ ๋ญ๊ท์ง๋ก WebGL ์ถ๋ ฅ ๊ฐ๋ฅ
์ ์ ์ง์,
ํ์ํ ๊น์?
C/C++ ํ๋ก๊ทธ๋๋ฐ ๊ฒฝํ
์ปดํจํฐ ์ผ๋ฐ ์์ - PC, ์ด์์ฒด์ ๋ฑ์ ์ฉ์ด
์ปดํจํฐ ๊ตฌ์กฐ ์์ - CPU, ๋ฉ๋ชจ๋ฆฌ, ๋ ์ง์คํฐ
8,531
๋ช
์๊ฐ์
156
๊ฐ
์๊ฐํ
59
๊ฐ
๋ต๋ณ
4.9
์
๊ฐ์ ํ์
30
๊ฐ
๊ฐ์
One more cup of drip coffee for the road
์ ์ฒด
25๊ฐ โ (3์๊ฐ 29๋ถ)
ํด๋น ๊ฐ์์์ ์ ๊ณต:
41-0 ์คํ๋
00:58
41-F ํด๋ก์ง
00:50
42-0 ์คํ๋
02:02
42-F ํด๋ก์ง
01:16
๊ณต๊ฐํ์ง ์๋ ๊ฐ์๋ก ์๊ฐ์ด ์ ํ๋ฉ๋๋ค.