์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
1992๋
์ด์ ์ปดํจํฐ ๊ทธ๋ํฝ์ ํ๋์จ์ด ๊ฐ์์ผ๋ก ์ฒ๋ฆฌ(๋ ๋๋ง)ํจ๊ณผ ๋์์ ์ฌ๋ฌ ๋ถ์ผ์์ ์ฌ์ฉ๋ ์ ์๋๋ก ํ๋ ๋ฒ์ฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ฐํ๋ 2D, 3D ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด์ ์ฐ์
์ฉ API๋ก, ๋ฒ์ฉ์ฑ์ด ์๋ ๋งํผ ๊ฐ์ฅ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋๊ณ ์๋ค.
2. ์์ธ[ํธ์ง]
OpenGL ์ด์ ์๋ 1980๋
๋ ์ค๋ฆฌ์ฝ ๊ทธ๋ํฝ์ค(SGI) ์ฌ์์ ๊ฐ๋ฐํ ์๋ฃจ์
์ธ IRIS GL์ด ์์๋๋ฐ ์ฌ๋ฌ OS์์ ์ฌ์ฉํ ์ ์๊ธฐ ์ํด ํ์ํ ๋ฒ์ฉ์ฑ๊ณผ ๋
๋ฆฝ์ฑ์ ๊ณ ๋ คํ์ง ์๊ณ ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ๋น์์ ํ๋์จ์ด ๋ฟ๋ง ์๋๋ผ ์ํํธ์จ์ด๊น์ง ์ ์ฝ์ด ์ฌํ๋ ์๋ฃจ์
์ด์๋ค. ๊ทธ๋์ ํ๋์จ์ด์ ์ด์์ฒด์ ์ ์ ์ฝ์ ๋ฐ์ง ์๋ ๋ฒ์ฉ์ ์ธ API ํ๋ก๊ทธ๋๋ฐ์ ์ํ OpenGL์ด ํ์ํ๊ฒ ๋์๋ ๊ฒ.
2000๋ ์ ๋น์๋ฆฌ ๊ธฐ์ ์ปจ์์์์ธ ํฌ๋ก๋ ธ์ค ๊ทธ๋ฃน์ด ์ค๋ฆฝ๋๋ฉด์ GPGPU ๋ณ๋ ฌ์ฐ์ฐ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ OpenCL์ ๋น๋กฏํ ๋ค์ํ ์ฉ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ API๊พธ๋ฌ๋ฏธ๋ก ํ์ฅ ๋ฐ ๊ด๋ฆฌํ๊ธฐ ์์ํ๋๋ฐ, 2006๋
7์์ OpenGL๋ ํฌ๋ก๋
ธ์ค ๊ทธ๋ฃน์ ์ํด ๊ด๋ฆฌ๋ฐ๋ ๊ฒ์ผ๋ก ์ ํ๋์๋ค.
๊ทธ๋ํฝ ์ชฝ์ ๋ฐฐ์ธ ๋์๋ ๊ผญ ์ ํ๊ฒ ๋๋ค. DirectX์ ๋ผ์ด๋ฒ ๊ฒฉ์ด๋ผ๊ณ ํ ์ ์๋ค. ๋ค๋ง DirectX๋ ๊ทธ๋ํฝ ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ํฌ์คํผ๋๋ฐฑ ๊ฐ์ ์ปจํธ๋กค๋ฌ ์ ์ด, ์ํฅ์ชฝ๋ ์์ฐ๋ฅด๊ณ ์์ด OpenGL๊ณผ 1:1๋ก ๋์๋์ง ์๋๋ค. OpenGL์ ์์ํ๊ฒ ๊ทธ๋ํฝ ์ถ๋ ฅ๋ง์ ๋ด๋นํ๋๊น. ์์ํ๊ฒ OpenGL๊ณผ ๋์๋๋ ๋ถ๋ถ์ DirectX ์ปดํฌ๋ํธ์ ์ผ๋ถ์ธ Direct3D๋ค.
์ด์ฐฝ๊ธฐ์๋ MS์์๋ OpenGL์ ์ง์ํ๋ค. ํ์ฌ๊น์ง๋ ๊ทธ๋ํฝ์นด๋ ๋์ ์์ด ์ํํธ์จ์ด ๋ ๋๋ง์ธ CPU ๊ฐ์์ผ๋ก๋ OpenGL 1.1๊น์ง ์ง์ํ๋ค. ๊ทธ๋ฌ๋ค๊ฐ, ๋ ์์๋ฃจ์ ์ธ DirectX๋ฅผ ๋ด๋์ผ๋ฉด์ MS๋ OpenGL์ ์ ๋ฌธ๊ฐ ์ฐ์ ์ฉ, DirectX๋ ๊ฐ์ ์ฉ ์ปดํจํฐ ๊ฒ์ ๊ทธ๋ํฝ์ฉ์ด๋ผ๋ ๊ธฐ๋ฏน์ ๋ง๋ค์ด ํผ๋จ๋ ธ๋๋ฐ ์กด ์นด๋งฅ์ด OpenGL์ด DirectX๋ณด๋ค ํจ์ฌ ํธ๋ฆฌํ๊ฒ ๊ฒ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๊ณ ์ง์ ์ฝ๋๋ฅผ ๋ณด์ด๋ฉด์ ๊ธ์ ์ฌ๋ ธ๊ณ , MS๋ ์กด ์นด๋งฅ์ด ์ฌ์ฉํ๊ธฐ ํ๋ค๋ค๋ฉด ๋ค๋ฅธ ๋๊ตฌ์๊ฒ๋ ํ๋ ๊ฒ ๋ง๋ค๋ฉด์ ๊ผฌ๋ฆฌ๋ฅผ ๋ด๋ ธ๋ค. ๊ทธ๋ฌ๋, 1998๋ ์ด 1.2 ๋ฒ์ ์ดํ OpenGL์ 3๋ ๊ฐ๊น์ด ๊ฐ์ ๊ณผ์ ์์ด ๊ฑฐ๋ญ๋ ๋ฌธ์ ๋ฅผ ํฐ๋จ๋ ธ๊ณ [1] DirectX๋ 1999๋ ํ๋ฐ๊ธฐ์ ๋ฐํํ 7.0 ๋ฒ์ ์์ ํฌ๊ฒ ๋ฐ์ ํ์ฌ ๊ฒฐ๊ตญ ์ญ์ ๋๊ณ ๋ง์๋ค. ์กด ์นด๋งฅ๋ ์ด์ ๋ DirectX๊ฐ ๋ ๋ซ๋ค๊ณ ๋ฐ์ธํ ์ํฉ. ์ ์์ธ์ผ๋ก MS์ ์๋ชจ๋ก ์ ์ด์ผ๊ธฐํ๋ ์ฌ๋๋ ์๋๋ฐ, OpenGL ์์ํ์ MS ์ธก ์ฌ๋์ด ๊ปด์๊ธด ํ์ง๋ง ๋ฑ ํ ๋ช ๋ฐ์ ์์ด์ ๊ฐ๋ฅ์ฑ์ ํฌ๋ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ , ๋ง์ฝ ์ ํ ๋ช ์ผ๋ก ์ธํด ๊ทธ๋ฐ ์ง์ ํฐ๋จ๋ฆฐ ๊ฑฐ๋ผ๋ฉด ๊ทธ๊ฑด ๊ทธ๋ฅ OpenGL ์ชฝ์ด ๋ฌด๋ฅํ๋ค๋ ์๊ธฐ๋ฐ์ ์ ๋๋ค.
์ด์จ๊ฑด ์ง๊ธ์ OpenGL๋ ์ ์น๋ถ์ฌํด์ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ํนํ๋ ๋ชจ๋ฐ์ผ ๊ฒ์์์ฅ์ด ๋จ๊ณ MS๊ฐ ๊ฑฐ๊ธฐ์ ์ง์ง๋ถ์งํ ์ํฉ์์ ์๋นํ ์ฐ์ธ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค. ๊ณผ๊ฑฐ ํ๋์จ์ด T&L ์์ ์ ๋นํ๋ฉด ํธ๋ ๋์ ๋ค์ณ์ง์ง ์์ ์ ๋๋ก ์ ๊ฐ์ ๋๊ณ ๋ ์์ง๋ง, OpenGL ์์ฒด๊ฐ ๊ฒ์์ ๋น๋กฏํ ๋ฉํฐ๋ฏธ๋์ด๋ง์ ์ํ ์กด์ฌ๊ฐ ์๋๋งํผ ๊ณ ๋ คํด์ผํ ์์ญ์ด ๋ง์ API์ด๋ค ๋ณด๋ ํน์ ์ ์ฒด์ธ MS๊ฐ ๋ณธ๋ Windows ๊ฒ์์ ์ํด ๊ฐ๋ฐํ๋ DirectX๋ณด๋ค ์์ ๊ธฐ์ ์ ์ฑํํ๊ธฐ ์ด๋ ค์ธ ์๋ฐ์ ์๋ค๋ ์ ์ ์ด๋ ์ ๋ ์ดํดํด์ผํ ํ์๊ฐ ์๋ค. 90๋ ๋ ์ค๋ฐ๊น์ง DirectX๋ณด๋ค OpenGL์ด ๋ ์ฐ์์๋ ๊ฑด ๊ทธ๋ํฝ API์ ์์ด์ DirectX๊ฐ OpenGL๋ณด๋ค 3๋ ๋ฆ๊ฒ ๋ฐํ๋ ํ๋ฐ ์ฃผ์์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ์ ๋ฟ์ด๋ค.
ํ์์ ์์ OpenGL์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๋๋ผ์ด๋ฒ์ด๋ค. 25๋ ์ด ๋๋ ๋์ OpenGL ์คํ์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ๋ค์ด ์์ฒญ๋๊ฒ ๋ง๊ณ ๊ณผ๊ฑฐ 1.x ์์ ์ API๋ถํฐ 4.x์ ์ถ๊ฐ๋ ์ต์ API๊น์ง ๋๋ผ์ด๋ฒ์์ ์ ๋ถ ์ง์ํ๋ ๋์์ 300์ฌ ๊ฐ์ ๋ฌํ๋ ํ์ฅ๊ธฐ๋ฅ๊น์ง ์ ๊ณตํด์ค์ผ ํ๋๋ฐ, ์ด๋ก ์ธํด ๋๋ผ์ด๋ฒ์ ๋ณต์ก๋๋ ์์์ ์ด์ํ๋ ์์ค์ด๋ค. ๋น์ฐํ ๋๋ผ์ด๋ฒ์ ํ์ง๋ ์ฌ๊ฐํ๊ฒ ๋ค๋จ์ด์ง ์ ๋ฐ์ ์๋ค. Direct3D์ฒ๋ผ ๊ด๋ฆฌ์ฃผ์ฒด์ ํต์ ๋ฅผ ๊ธฐ๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ผ์ด๋ฒ์ ํ๋ฆฌํฐ๋ ์์ ํ GPU ์ ์กฐ์ฌ์ ๋ฌ๋ ค ์๋ค.[2] ์ด๋ฌํ ์ด์ ๋ก OpenGL ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ข GPU ๋๋ผ์ด๋ฒ ๋ฒ๊ทธ์ ์ง๋ขฐ๋ฐญ์ ์ด๊ธ์ด๊ธ ํผํ๋ฉด์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์ ์ฐ์์ด๋ค. ์ฌ์ค์ ๋ฌด๋ฌ๋ง ํฌ๋ก์คํ๋ซํผ์ธ ์ . ๊ตฌ๊ธ ํฌ๋กฌ์ ์๋ ๋ฒ์ ์ ๊ฒฝ์ฐ OpenGL์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ ํฌ๊ธฐํ๊ณ OpenGL ๋ช ๋ น์ Direct3D๋ก ๋ณํํด์ ๋๋ฆฌ๋ ANGLE์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ค๊ฐ ๋ ์ด์ด๋ฅผ ๊ฐ๋ฐํด์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ทธ ์ธ ํ๋ซํผ์ ๊ฒฝ์ฐ ์๋ฐฑ๊ฐ์ ๋ฌํ๋ ๋๋ผ์ด๋ฒ ๋ฒ๊ทธ๋ค์ ํ๋ํ๋์ฉ ์ฐํํ๋ ์์ฒญ๋๊ฒ ๋ณต์กํ ๋ ๋๋ง ํจ์ค๊ฐ ๊ตฌํ๋์ด ์๋ค. ํฌ๋ก๋ ธ์ค ๊ทธ๋ฃน์ด OpenGL์ ๋๋๊ณ Vulkan์ ๋ง๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ์ฌ์ค ์ด๊ฒ์ด๋ค. ๋์ ํ ๋๋ผ์ด๋ฒ๊ฐ ๊ด๋ฆฌ๊ฐ ์ ๋๋ ์์ค๊น์ง ์๊ธฐ ๋๋ฌธ. ๊ทธ๋์ Vulkan์ ์คํ์ ์ต์ํ์์ผ์ ๋๋ผ์ด๋ฒ์ ์ญํ ์ ์ต๋ํ ์ค์ด๊ณ ํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ ๋ง์ ๊ฒ์ ์์ํ๋๋ก ์ค๊ณ๋์ด ์๋ค. ๋ค๋ง, ์ด๋ก ์ธํด Vulkan์ ๊ฐ๋ฐ ๋์ด๋๋ ์์ฒญ๋๊ฒ ์ฌ๋ผ๊ฐ ๋ฒ๋ ธ๋ค. OpenGL์ ๊ทธ ์ธ์ ๋ฌธ์ ๋ก๋ ์ ์ญ ์ํ ๋จธ์ ๊ธฐ๋ฐ์ด๋ผ ๋ฉํฐ์ค๋ ๋ฉ์ ์จ์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ํ๋จธ์ ์ ๋ด์ฉ์ ์ถ์ ํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๋ฅผ ๋ง๋ค๊ธฐ ์ฝ๋ค๋ ์ ์ด ์๋ค. ์๋ฌด๋๋ API์ ๊ธฐ๋ณธ ํ์ 1990๋ ๋ ์ด๋ฐ์ ๋ง๋ค์ด์ง ๊ฒ์ด๋๋งํผ ์๋ฌด๋๋ ์์ฆ ํ๋ก๊ทธ๋๋ฐ ํธ๋ ๋์ ๋๋จ์ด์ง ๋ถ๋ถ์ด ์๋ค.
์ด์ง๊ฐํ ๊ทธ๋ํฝ ์นด๋๋ผ๋ฉด ๋ ๋ค ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. DirectX๋ ์ฌ์ค์ ์๋์ฐ ์ ์ฉ์ด๋ฏ๋ก ํ ์ด์์ฒด์ (OS X, ๋ฆฌ๋ ์ค ๋ฑ)๋ฅผ ์ด๋ค๋ฉด ์ ์ผํ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ๋ ํ๋ค. 2010๋ ๋ ์์ ์์๋ ์ผ๋ฐ์ธ ์๊ฐ์ผ๋ก ๊ทธ๋์ด ๊ทธ๋์ด๋ค. ํนํ ์๋๋ก์ด๋์์๋ OpenGL์ด ๋ฉ์ด์ ๋ค.
OpenGL์ ํฌ๊ฒ GL, GLU(Utility)๋ก ๋๋ ์ ธ ์๋ค. GL์ ๊ธฐ๋ณธ์ ์ธ ํจ์๋ค๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , GLU๋ GL์ ์ข ๋ ํธํ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ํ ํจ์๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ฐธ๊ณ ๋ก GL๊ณผ GLU ๋ ๋ค ์ ๋ฐ์ดํธ๊ฐ ๋๊ธด ์ง ์ค๋๋์๊ธฐ ๋๋ฌธ์, ์ค์ง์ ์ผ๋ก OpenGL์ ์ฌ์ฉํ๋ ค๋ฉด GLEW ๊ฐ์ ์ธ๋ถ ํ์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์ผ ํ๋ค.
์ฌ์ค OpenGL์ API๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ๋ช ์ธ์ผ ๋ฟ์ด๋ผ, ์ค์ ๊ทธ ๊ตฌํ์ฒด์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋์ ํ๋ซํผ์๋ ์ฌ๋ฟ ์กด์ฌํ ์ ์๊ณ , ํ๋ซํผ ๋ง๋ค๋ ๊ตฌํ์ด ๋ฌ๋ผ์ ๋๋ฐ์ด์ค ์ปจํ ์คํธ ์์ฑ ๋ฐ์์ ๋ถ๋ถ์ด ํ๋ซํผ๋ง๋ค ๋ชจ๋ ๋ฌ๋ผ ์์ ํ ํฌ๋ก์คํ๋ซํผ์ ์๋๋ค. ์ด ๋๋ฌธ์ ์ค์ ๋ก ํ๋ฉด์ ๋ญ๊ฐ๋ฅผ ๋ํ๋ด๋ ค๋ฉด ๋์ฒด๋ก ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.์ด ๋ ์ฌ์ฉํ๋ ๊ฒ์ด GLUT์ด๋ค.[4][5][6] ์ด ์ธ์๋ SDL ๋ฑ๊ณผ ์ฐ๋ํด์ ์ฌ์ฉํ๊ธฐ๋ ํ๋๋ฐ ์ด๋ ๋๋ถ๋ถ ํฌ๋ก์คํ๋ซํผ์ ์ง์ํ๋ค.
๋๋ถ๋ถ์ 3D ๊ทธ๋ํฝ์ด ๊ทธ๋ ์ง๋ง, ํนํ OpenGL์ ๋ก์ฐ๋ ๋ฒจ API์ด๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ๋ชจ๋ ๊ฑธ ์๋์ผ๋ก ํด์ค์ผ ํด์ ๊น์ด ์๊ฒ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ ์ ๋ ์ํ๊ณผ ์นํด์ ธ์ผ ํ๋ค. ์ต์ํ ๊ณต๋ ์์ค์ ์ ํ๋์ํ๊ณผ ๋ฏธ๋ถ๊ธฐํํ์ ์ดํดํ๊ณ ์์ด์ผ ํ๋๋ฐ, ์ปดํจํฐ๊ณตํ๊ณผ ํน์ฑ์ ์ด์ฐ์ํ์ ์ ์ธํ๋ฉด ๋ํ๋ ๋ฒจ์ ์ํ์ ๊ฑฐ์ ๋ฐฐ์ฐ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ๋ ํ๊ณ , ์ ๊ธฐ์ ์ด ์ถ๊ฐ๋๋ฉด์ ์๊ตฌํ๋ ์ํ ์์ค์ด ์ ์ ์ฌ๋ผ๊ฐ๋ ์ถ์ธ๋ผ๋ ์ ์ด ๋ฌธ์ ๋ค. ๋จ์ํ API๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ์ ๋๋ผ๋ฉด ๊ธฐ์ด ๋ฏธ์ ๋ถ๊ณผ ๋ฒกํฐ ์์ค์ ์ง์๋ง ๊ฐ์ง๊ณ ๋ ๋๊ธฐ๋ ํ๊ฒ ์ผ๋, ํผ์์ ์ธ ์ ๊ทผ์๋ง ๋จธ๋ฌด๋ฅด๊ฒ ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ๊ทธ๋ํฝ์ค ์์ฒด๋ฅผ ์ฐ๊ตฌํ๋ ๊ฒ ์๋๋ผ๋ฉด ๊ทธ ์ ๋๋ก๋ ๋ณ ๋ฌธ์ ์๊ธฐ๋ ํ๋ค.
๊ด๋ จ ๊ต์ฌ์ ์์ ์ผ๋ก๋ Red Book๊ณผ Blue Book(๋ ํผ๋ฐ์ค ๋งค๋ด์ผ), Orange Book, Superbible์ด ๋ํ์ ์ด๋ค.
์ ํ์ด ๋งค์ฐ ์ฌ๋ํ์ฌ[7] OS X[8]์ ๋ชจ๋ ์์คํ ๊ทธ๋ํฝ์ OpenGL๋ก ๊ฐ์๋์ด ํ์๋๋ค.[9] ๊ทธ๋ฌ๋ OpenGL 4.1 ๋ฒ์ ์ดํ ๋๋ผ์ด๋ฒ ์ ๋ฐ์ดํธ๋ฅผ ์ ํ ํ์ง ์์ ์ ํ ํ๊ฒฝ์์ OpenGL์ ์ด์ฉํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ์์ฑ์ ์ฌ๊ณ ์๋ค๊ฐ, WWDC 2014์์ ์์ฒด ๊ฐ๋ฐํ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Metal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ก ๊ณต๊ฐํ์๊ณ , WWDC 2015์๋ macOS์ฉ Metal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ ๊ณต๊ฐํ๋ฉด์ ์์ผ๋ก์ macOS, iOS, tvOS์ฉ ์ฑ๋ค์ด Metal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ๋ฐ๋ ๊ฒ์ด๋ผ ๋ฐํํ์๋ค. ์๋๋ก์ด๋, ๋ฆฌ๋ ์ค ๋ฑ์ ํ ํ๋ซํผ์์๋ ์ฌ์ ํ OpenGL์ ์ฌ์ฉํ๊ณ ์์ง๋ง, ๋ชจ๋ฐ์ผ ์์ฅ์ ํ ์ถ์ด์๋ iOS์์์ ์ ์ ์จ์ ํ์คํ ์์ด๋ฒ๋ฆฌ๊ฒ ๋์๋ค. ์ธ๋ฆฌ์ผ ์์ง, ์ ๋ํฐ ์์ง ๋ฑ์ ์ฃผ์ ๊ฒ์ ์์ง๋ค์ Metal์ ์ ์ ์ง์ํ๊ณ ์๋ค.
2015๋ 3์, ์ฐจ์ธ๋ OpenGL์ธ Vulkan์ด ์ต์ด ๊ณต๊ฐ๋์๋ค.
2000๋ ์ ๋น์๋ฆฌ ๊ธฐ์ ์ปจ์์์์ธ ํฌ๋ก๋ ธ์ค ๊ทธ๋ฃน์ด ์ค๋ฆฝ๋๋ฉด์ GPGPU ๋ณ๋ ฌ์ฐ์ฐ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ OpenCL์ ๋น๋กฏํ ๋ค์ํ ์ฉ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ API
๊ทธ๋ํฝ ์ชฝ์ ๋ฐฐ์ธ ๋์๋ ๊ผญ ์ ํ๊ฒ ๋๋ค. DirectX์ ๋ผ์ด๋ฒ ๊ฒฉ์ด๋ผ๊ณ ํ ์ ์๋ค. ๋ค๋ง DirectX๋ ๊ทธ๋ํฝ ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์ ์ ๋ ฅ๊ณผ ํฌ์คํผ๋๋ฐฑ ๊ฐ์ ์ปจํธ๋กค๋ฌ ์ ์ด, ์ํฅ์ชฝ๋ ์์ฐ๋ฅด๊ณ ์์ด OpenGL๊ณผ 1:1๋ก ๋์๋์ง ์๋๋ค. OpenGL์ ์์ํ๊ฒ ๊ทธ๋ํฝ ์ถ๋ ฅ๋ง์ ๋ด๋นํ๋๊น. ์์ํ๊ฒ OpenGL๊ณผ ๋์๋๋ ๋ถ๋ถ์ DirectX ์ปดํฌ๋ํธ์ ์ผ๋ถ์ธ Direct3D๋ค.
์ด์ฐฝ๊ธฐ์๋ MS์์๋ OpenGL์ ์ง์ํ๋ค. ํ์ฌ๊น์ง๋ ๊ทธ๋ํฝ์นด๋ ๋์ ์์ด ์ํํธ์จ์ด ๋ ๋๋ง์ธ CPU ๊ฐ์์ผ๋ก๋ OpenGL 1.1๊น์ง ์ง์ํ๋ค. ๊ทธ๋ฌ๋ค๊ฐ, ๋ ์์๋ฃจ์ ์ธ DirectX๋ฅผ ๋ด๋์ผ๋ฉด์ MS๋ OpenGL์ ์ ๋ฌธ๊ฐ ์ฐ์ ์ฉ, DirectX๋ ๊ฐ์ ์ฉ ์ปดํจํฐ ๊ฒ์ ๊ทธ๋ํฝ์ฉ์ด๋ผ๋ ๊ธฐ๋ฏน์ ๋ง๋ค์ด ํผ๋จ๋ ธ๋๋ฐ ์กด ์นด๋งฅ์ด OpenGL์ด DirectX๋ณด๋ค ํจ์ฌ ํธ๋ฆฌํ๊ฒ ๊ฒ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๊ณ ์ง์ ์ฝ๋๋ฅผ ๋ณด์ด๋ฉด์ ๊ธ์ ์ฌ๋ ธ๊ณ , MS๋ ์กด ์นด๋งฅ์ด ์ฌ์ฉํ๊ธฐ ํ๋ค๋ค๋ฉด ๋ค๋ฅธ ๋๊ตฌ์๊ฒ๋ ํ๋ ๊ฒ ๋ง๋ค๋ฉด์ ๊ผฌ๋ฆฌ๋ฅผ ๋ด๋ ธ๋ค. ๊ทธ๋ฌ๋, 1998๋ ์ด 1.2 ๋ฒ์ ์ดํ OpenGL์ 3๋ ๊ฐ๊น์ด ๊ฐ์ ๊ณผ์ ์์ด ๊ฑฐ๋ญ๋ ๋ฌธ์ ๋ฅผ ํฐ๋จ๋ ธ๊ณ [1] DirectX๋ 1999๋ ํ๋ฐ๊ธฐ์ ๋ฐํํ 7.0 ๋ฒ์ ์์ ํฌ๊ฒ ๋ฐ์ ํ์ฌ ๊ฒฐ๊ตญ ์ญ์ ๋๊ณ ๋ง์๋ค. ์กด ์นด๋งฅ๋ ์ด์ ๋ DirectX๊ฐ ๋ ๋ซ๋ค๊ณ ๋ฐ์ธํ ์ํฉ. ์ ์์ธ์ผ๋ก MS์ ์๋ชจ๋ก ์ ์ด์ผ๊ธฐํ๋ ์ฌ๋๋ ์๋๋ฐ, OpenGL ์์ํ์ MS ์ธก ์ฌ๋์ด ๊ปด์๊ธด ํ์ง๋ง ๋ฑ ํ ๋ช ๋ฐ์ ์์ด์ ๊ฐ๋ฅ์ฑ์ ํฌ๋ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ , ๋ง์ฝ ์ ํ ๋ช ์ผ๋ก ์ธํด ๊ทธ๋ฐ ์ง์ ํฐ๋จ๋ฆฐ ๊ฑฐ๋ผ๋ฉด ๊ทธ๊ฑด ๊ทธ๋ฅ OpenGL ์ชฝ์ด ๋ฌด๋ฅํ๋ค๋ ์๊ธฐ๋ฐ์ ์ ๋๋ค.
์ด์จ๊ฑด ์ง๊ธ์ OpenGL๋ ์ ์น๋ถ์ฌํด์ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ, ํนํ๋ ๋ชจ๋ฐ์ผ ๊ฒ์์์ฅ์ด ๋จ๊ณ MS๊ฐ ๊ฑฐ๊ธฐ์ ์ง์ง๋ถ์งํ ์ํฉ์์ ์๋นํ ์ฐ์ธ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค. ๊ณผ๊ฑฐ ํ๋์จ์ด T&L ์์ ์ ๋นํ๋ฉด ํธ๋ ๋์ ๋ค์ณ์ง์ง ์์ ์ ๋๋ก ์ ๊ฐ์ ๋๊ณ ๋ ์์ง๋ง, OpenGL ์์ฒด๊ฐ ๊ฒ์์ ๋น๋กฏํ ๋ฉํฐ๋ฏธ๋์ด๋ง์ ์ํ ์กด์ฌ๊ฐ ์๋๋งํผ ๊ณ ๋ คํด์ผํ ์์ญ์ด ๋ง์ API์ด๋ค ๋ณด๋ ํน์ ์ ์ฒด์ธ MS๊ฐ ๋ณธ๋ Windows ๊ฒ์์ ์ํด ๊ฐ๋ฐํ๋ DirectX๋ณด๋ค ์์ ๊ธฐ์ ์ ์ฑํํ๊ธฐ ์ด๋ ค์ธ ์๋ฐ์ ์๋ค๋ ์ ์ ์ด๋ ์ ๋ ์ดํดํด์ผํ ํ์๊ฐ ์๋ค. 90๋ ๋ ์ค๋ฐ๊น์ง DirectX๋ณด๋ค OpenGL์ด ๋ ์ฐ์์๋ ๊ฑด ๊ทธ๋ํฝ API์ ์์ด์ DirectX๊ฐ OpenGL๋ณด๋ค 3๋ ๋ฆ๊ฒ ๋ฐํ๋ ํ๋ฐ ์ฃผ์์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํ์ ๋ฟ์ด๋ค.
ํ์์ ์์ OpenGL์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๋๋ผ์ด๋ฒ์ด๋ค. 25๋ ์ด ๋๋ ๋์ OpenGL ์คํ์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ๋ค์ด ์์ฒญ๋๊ฒ ๋ง๊ณ ๊ณผ๊ฑฐ 1.x ์์ ์ API๋ถํฐ 4.x์ ์ถ๊ฐ๋ ์ต์ API๊น์ง ๋๋ผ์ด๋ฒ์์ ์ ๋ถ ์ง์ํ๋ ๋์์ 300์ฌ ๊ฐ์ ๋ฌํ๋ ํ์ฅ๊ธฐ๋ฅ๊น์ง ์ ๊ณตํด์ค์ผ ํ๋๋ฐ, ์ด๋ก ์ธํด ๋๋ผ์ด๋ฒ์ ๋ณต์ก๋๋ ์์์ ์ด์ํ๋ ์์ค์ด๋ค. ๋น์ฐํ ๋๋ผ์ด๋ฒ์ ํ์ง๋ ์ฌ๊ฐํ๊ฒ ๋ค๋จ์ด์ง ์ ๋ฐ์ ์๋ค. Direct3D์ฒ๋ผ ๊ด๋ฆฌ์ฃผ์ฒด์ ํต์ ๋ฅผ ๊ธฐ๋ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ผ์ด๋ฒ์ ํ๋ฆฌํฐ๋ ์์ ํ GPU ์ ์กฐ์ฌ์ ๋ฌ๋ ค ์๋ค.[2] ์ด๋ฌํ ์ด์ ๋ก OpenGL ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ์ข GPU ๋๋ผ์ด๋ฒ ๋ฒ๊ทธ์ ์ง๋ขฐ๋ฐญ์ ์ด๊ธ์ด๊ธ ํผํ๋ฉด์ ๊ฐ๋ฐํ๋ ๊ณผ์ ์ ์ฐ์์ด๋ค. ์ฌ์ค์ ๋ฌด๋ฌ๋ง ํฌ๋ก์คํ๋ซํผ์ธ ์ . ๊ตฌ๊ธ ํฌ๋กฌ์ ์๋ ๋ฒ์ ์ ๊ฒฝ์ฐ OpenGL์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ ํฌ๊ธฐํ๊ณ OpenGL ๋ช ๋ น์ Direct3D๋ก ๋ณํํด์ ๋๋ฆฌ๋ ANGLE์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์ค๊ฐ ๋ ์ด์ด๋ฅผ ๊ฐ๋ฐํด์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ๊ทธ ์ธ ํ๋ซํผ์ ๊ฒฝ์ฐ ์๋ฐฑ๊ฐ์ ๋ฌํ๋ ๋๋ผ์ด๋ฒ ๋ฒ๊ทธ๋ค์ ํ๋ํ๋์ฉ ์ฐํํ๋ ์์ฒญ๋๊ฒ ๋ณต์กํ ๋ ๋๋ง ํจ์ค๊ฐ ๊ตฌํ๋์ด ์๋ค. ํฌ๋ก๋ ธ์ค ๊ทธ๋ฃน์ด OpenGL์ ๋๋๊ณ Vulkan์ ๋ง๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ์ฌ์ค ์ด๊ฒ์ด๋ค. ๋์ ํ ๋๋ผ์ด๋ฒ๊ฐ ๊ด๋ฆฌ๊ฐ ์ ๋๋ ์์ค๊น์ง ์๊ธฐ ๋๋ฌธ. ๊ทธ๋์ Vulkan์ ์คํ์ ์ต์ํ์์ผ์ ๋๋ผ์ด๋ฒ์ ์ญํ ์ ์ต๋ํ ์ค์ด๊ณ ํ๋ก๊ทธ๋๋จธ๋ค์๊ฒ ๋ง์ ๊ฒ์ ์์ํ๋๋ก ์ค๊ณ๋์ด ์๋ค. ๋ค๋ง, ์ด๋ก ์ธํด Vulkan์ ๊ฐ๋ฐ ๋์ด๋๋ ์์ฒญ๋๊ฒ ์ฌ๋ผ๊ฐ ๋ฒ๋ ธ๋ค. OpenGL์ ๊ทธ ์ธ์ ๋ฌธ์ ๋ก๋ ์ ์ญ ์ํ ๋จธ์ ๊ธฐ๋ฐ์ด๋ผ ๋ฉํฐ์ค๋ ๋ฉ์ ์จ์ ํ๊ฒ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ํ๋จธ์ ์ ๋ด์ฉ์ ์ถ์ ํ๊ธฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ๋ฒ๊ทธ๋ฅผ ๋ง๋ค๊ธฐ ์ฝ๋ค๋ ์ ์ด ์๋ค. ์๋ฌด๋๋ API์ ๊ธฐ๋ณธ ํ์ 1990๋ ๋ ์ด๋ฐ์ ๋ง๋ค์ด์ง ๊ฒ์ด๋๋งํผ ์๋ฌด๋๋ ์์ฆ ํ๋ก๊ทธ๋๋ฐ ํธ๋ ๋์ ๋๋จ์ด์ง ๋ถ๋ถ์ด ์๋ค.
์ด์ง๊ฐํ ๊ทธ๋ํฝ ์นด๋๋ผ๋ฉด ๋ ๋ค ์ง์ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. DirectX๋ ์ฌ์ค์ ์๋์ฐ ์ ์ฉ์ด๋ฏ๋ก ํ ์ด์์ฒด์ (OS X, ๋ฆฌ๋ ์ค ๋ฑ)๋ฅผ ์ด๋ค๋ฉด ์ ์ผํ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ๋ ํ๋ค. 2010๋ ๋ ์์ ์์๋ ์ผ๋ฐ์ธ ์๊ฐ์ผ๋ก ๊ทธ๋์ด ๊ทธ๋์ด๋ค. ํนํ ์๋๋ก์ด๋์์๋ OpenGL์ด ๋ฉ์ด์ ๋ค.
OpenGL์ ํฌ๊ฒ GL, GLU(Utility)๋ก ๋๋ ์ ธ ์๋ค. GL์ ๊ธฐ๋ณธ์ ์ธ ํจ์๋ค๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , GLU๋ GL์ ์ข ๋ ํธํ ์ฌ์ฉํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ํ ํจ์๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ฐธ๊ณ ๋ก GL๊ณผ GLU ๋ ๋ค ์ ๋ฐ์ดํธ๊ฐ ๋๊ธด ์ง ์ค๋๋์๊ธฐ ๋๋ฌธ์, ์ค์ง์ ์ผ๋ก OpenGL์ ์ฌ์ฉํ๋ ค๋ฉด GLEW ๊ฐ์ ์ธ๋ถ ํ์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์ผ ํ๋ค.
์ฌ์ค OpenGL์ API๋ ์ธํฐํ์ด์ค์ ๊ธฐ๋ฅ์ ๋ช ์ธ์ผ ๋ฟ์ด๋ผ, ์ค์ ๊ทธ ๊ตฌํ์ฒด์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋์ ํ๋ซํผ์๋ ์ฌ๋ฟ ์กด์ฌํ ์ ์๊ณ , ํ๋ซํผ ๋ง๋ค๋ ๊ตฌํ์ด ๋ฌ๋ผ์ ๋๋ฐ์ด์ค ์ปจํ ์คํธ ์์ฑ ๋ฐ์์ ๋ถ๋ถ์ด ํ๋ซํผ๋ง๋ค ๋ชจ๋ ๋ฌ๋ผ ์์ ํ ํฌ๋ก์คํ๋ซํผ์ ์๋๋ค. ์ด ๋๋ฌธ์ ์ค์ ๋ก ํ๋ฉด์ ๋ญ๊ฐ๋ฅผ ๋ํ๋ด๋ ค๋ฉด ๋์ฒด๋ก ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋๋ถ๋ถ์ 3D ๊ทธ๋ํฝ์ด ๊ทธ๋ ์ง๋ง, ํนํ OpenGL์ ๋ก์ฐ๋ ๋ฒจ API์ด๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ๋ชจ๋ ๊ฑธ ์๋์ผ๋ก ํด์ค์ผ ํด์ ๊น์ด ์๊ฒ ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ ์ ๋ ์ํ๊ณผ ์นํด์ ธ์ผ ํ๋ค. ์ต์ํ ๊ณต๋ ์์ค์ ์ ํ๋์ํ๊ณผ ๋ฏธ๋ถ๊ธฐํํ์ ์ดํดํ๊ณ ์์ด์ผ ํ๋๋ฐ, ์ปดํจํฐ๊ณตํ๊ณผ ํน์ฑ์ ์ด์ฐ์ํ์ ์ ์ธํ๋ฉด ๋ํ๋ ๋ฒจ์ ์ํ์ ๊ฑฐ์ ๋ฐฐ์ฐ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ๋ ํ๊ณ , ์ ๊ธฐ์ ์ด ์ถ๊ฐ๋๋ฉด์ ์๊ตฌํ๋ ์ํ ์์ค์ด ์ ์ ์ฌ๋ผ๊ฐ๋ ์ถ์ธ๋ผ๋ ์ ์ด ๋ฌธ์ ๋ค. ๋จ์ํ API๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๋ ์ ๋๋ผ๋ฉด ๊ธฐ์ด ๋ฏธ์ ๋ถ๊ณผ ๋ฒกํฐ ์์ค์ ์ง์๋ง ๊ฐ์ง๊ณ ๋ ๋๊ธฐ๋ ํ๊ฒ ์ผ๋, ํผ์์ ์ธ ์ ๊ทผ์๋ง ๋จธ๋ฌด๋ฅด๊ฒ ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ๊ทธ๋ํฝ์ค ์์ฒด๋ฅผ ์ฐ๊ตฌํ๋ ๊ฒ ์๋๋ผ๋ฉด ๊ทธ ์ ๋๋ก๋ ๋ณ ๋ฌธ์ ์๊ธฐ๋ ํ๋ค.
๊ด๋ จ ๊ต์ฌ์ ์์ ์ผ๋ก๋ Red Book๊ณผ Blue Book(๋ ํผ๋ฐ์ค ๋งค๋ด์ผ), Orange Book, Superbible์ด ๋ํ์ ์ด๋ค.
์ ํ์ด ๋งค์ฐ ์ฌ๋ํ์ฌ[7] OS X[8]์ ๋ชจ๋ ์์คํ ๊ทธ๋ํฝ์ OpenGL๋ก ๊ฐ์๋์ด ํ์๋๋ค.[9] ๊ทธ๋ฌ๋ OpenGL 4.1 ๋ฒ์ ์ดํ ๋๋ผ์ด๋ฒ ์ ๋ฐ์ดํธ๋ฅผ ์ ํ ํ์ง ์์ ์ ํ ํ๊ฒฝ์์ OpenGL์ ์ด์ฉํ๋ ๊ฐ๋ฐ์๋ค์๊ฒ ์์ฑ์ ์ฌ๊ณ ์๋ค๊ฐ, WWDC 2014์์ ์์ฒด ๊ฐ๋ฐํ ๊ทธ๋ํฝ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Metal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ก ๊ณต๊ฐํ์๊ณ , WWDC 2015์๋ macOS์ฉ Metal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ ๊ณต๊ฐํ๋ฉด์ ์์ผ๋ก์ macOS, iOS, tvOS์ฉ ์ฑ๋ค์ด Metal ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ฐ๋ฐ๋ ๊ฒ์ด๋ผ ๋ฐํํ์๋ค. ์๋๋ก์ด๋, ๋ฆฌ๋ ์ค ๋ฑ์ ํ ํ๋ซํผ์์๋ ์ฌ์ ํ OpenGL์ ์ฌ์ฉํ๊ณ ์์ง๋ง, ๋ชจ๋ฐ์ผ ์์ฅ์ ํ ์ถ์ด์๋ iOS์์์ ์ ์ ์จ์ ํ์คํ ์์ด๋ฒ๋ฆฌ๊ฒ ๋์๋ค. ์ธ๋ฆฌ์ผ ์์ง, ์ ๋ํฐ ์์ง ๋ฑ์ ์ฃผ์ ๊ฒ์ ์์ง๋ค์ Metal์ ์ ์ ์ง์ํ๊ณ ์๋ค.
2015๋ 3์, ์ฐจ์ธ๋ OpenGL์ธ Vulkan์ด ์ต์ด ๊ณต๊ฐ๋์๋ค.
3. ์ข ๋ฅ[ํธ์ง]
3.1. OpenGL[ํธ์ง]
์ต์ ๋ฒ์ ์ 2017๋
7์ 31์ผ ๋ฐํ๋ 4.6 ๋ฒ์ ์ด๋ค. #
2.0 ๋ฒ์ ๋ถํฐ GLSL์ ์ด์ฉํ ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ์์ผ๋ก ์ง์ํ๊ธฐ ์์ํ์ผ๋ ์ฌ์ค, ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ฒด๋ OpenGL์ ํ์๊ณผ ํจ๊ป ์์๋์๋ค. ์ด๊ธฐ์๋ ARB AL๋ผ๊ณ ๋ ๋ถ๋ฅด๋ Architecture Review Board ์ด์ ๋ธ๋ฆฌ ์ธ์ด๊ฐ ๊ทธ๊ฒ์ผ๋ก ๋ฒค๋ ์ ์ฅ์ธ ํ๋์จ์ด ์ ์กฐ์ฌ๋ค์ ์ฃผ๋๋ก ์ถ๊ฐ๋ ํ์ฅ ๊ธฐ๋ฅ ์ปจ์ [14]์ด๋ค๋ณด๋ OpenGL์ด ๊ทธ๋ ๊ฒ ์ค์์ ํ๋ ๋ฒ์ฉ์ฑ์ด ๋ฌด์๋์๊ธฐ ๋๋ฌธ์ ์ด๋ค ๊ทธ๋ํฝ์นด๋์์๋ ์ ๋์๊ฐ๊ณ ๋ค๋ฅธ ์ด๋ค ๊ทธ๋ํฝ์นด๋์์๋ ๋์๊ฐ์ง ์๋ ๋ฑ ์ ์ฒด์ ์ผ๋ก ์ค๊ตฌ๋๋ฐฉ์ผ ์๋ฐ์ ์์์ผ๋ฉฐ, 1998๋ 1.2.1 ๋ฒ์ ์ ๋ค์ด์์ผ ๋ฒ์ฉ์ฑ์ด ์๋ ARB_multitexture ๋ช ๋ น์ด๋ฅผ ์์์ผ๋ก 2001๋ 1.3 ๋ฒ์ ๋ถํฐ ARB๊ฐ ๋ถ์ฌ์ง ๊ณต์ ํ์ฅ ๊ธฐ๋ฅ๋ค์ด ๋๊ฑฐ ์ถ๊ฐ๋์์ง๋ง[15] ๊ฒฐ์ ์ ์ผ๋ก ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ค๋ค์ผ ํ๋ค๋ณด๋ ์ง์ ์ฅ๋ฒฝ์ด ์์ฒญ ๋์๋ค.
๊ฐ๋ ์์ฒด๋ 2000๋ 11์์ ๋ฐํ๋ MS์ DirectX 8.0์ ์ ฐ์ด๋ ์ด์ ๋ธ๋ฆฌ ์ธ์ด๋ณด๋ค 8๋ ์ด์ ๋จผ์ ๋ด์ธ์ด ๊ฒ์ ์์ ์๋ ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ผ๊ณ ๋ณผ ์ ์์ง๋ง 2002๋ ์ MS๊ฐ ์ง์ ์ฅ๋ฒฝ์ ๋ํญ ๋ฎ์ถ ๊ณ ์์ค ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ HLSL์ ์ฌ๋น ๋ฅด๊ฒ ๋ฐํํจ์ผ๋ก์จ OpenGL ์ธก์์๋ 2004๋ ์ ์ด์ ๋น์ทํ ๊ฐ๋ ์ ์ง๋ GLSL์ด ๋ฐํ๋์๋ค. 2.0 ๋ฒ์ ๊น์ง ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ์ง ์๋ ์ด์ ์ ๋ฐฉ์์ผ๋ก๋ ํ๋ฉด์ ํด๋ฆฌ๊ณค์ ์ถ๋ ฅํ ์ ์์์ง๋ง, 3.0 ๋ฒ์ ๋ถํฐ๋ GLSL์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ํ๋ฉด์ ํด๋ฆฌ๊ณค์ ์ถ๋ ฅํ ์ ์๊ฒ๋ ํ์๊ฐ ๋์๋ค.
๊ต์ก๊ธฐ๊ด ๋ฑ์์๋ ์ต์ ๋ฒ์ ์ ์์งํ๊ธฐ ์ํด์๋ ๊ตฌ๋ฒ์ ๋ถํฐ ๊ฐ๋ ์ ์ตํ๋๊ฒ ์ค์ํ๋ค๋ ๋ช ๋ชฉ์ผ๋ก ์์ง๋ 1.0 ๋ฒ์ ์ ๊ฐ์ง๊ณ ์์ ์ ํ๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.[16] OpenGL 1.0์ ํด๋ฆฌ๊ณค ์ฐ์ฐ ๋ฑ ๊ฐ๋ ๋ง ์ตํ๋ ๊ฒ์ ์ถ์ฒํ๊ณ ์ค๋ฌด ๊ฐ๋ฐ์์๋ OpenGL 1.x ๋๋ 2.x ๋๋ฅผ ์ฌ์ฉํ ๊ฐ๋ฐ์ ์ถ์ฒํ์ง ์๋๋ค.
OpenGL 3.x ๋ถํฐ ๋ง์ ๊ฐ์ ์ด ์์์ผ๋ฉฐ, ํ ์ ๋ ์ด์ ๊ธฐ๋ฅ์ด ์ ์ธ๋ 3.3 ๋ฒ์ ์ ์ธ ์ ์๋ ์ ์ฌ์์น ์๋ ์ํฉ์ด๋ผ๋ฉด ์ต์ํ ๊ณ ์์ค ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ 2.0 ๋ฒ์ ์ด์์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ถ์ฒ๋๋ค. ๋ํ์ ์ธ ์ฐจ์ด๋ก 2.0๊น์ง๋ primitives๋ฅผ ๊ทธ๋ฆด ๋ glBegin()๊ณผ glEnd()๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํด, 3.0 ์ดํ๋ถํฐ ์ด ๊ธฐ๋ฅ์ Deprecated ๋์๋ค. glBegin()์ ๋ํ์ ์ธ ๋ฌธ์ ์ ์ผ๋ก๋ ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์๊ฐ ๋์คํ๋ ํ๋ ์ปดํจํ ํ๊ฒฝ์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ์ ์ ๊ผฝ์ ์ ์์ผ๋ฉฐ ๊ฐ ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ ค ๋ผ ๋ glBegin()์ ํธ์ถํด์ผ ํ๋ฏ๋ก ์ค๋ฒํค๋ ๋ฌธ์ ๊ฐ ์ผ์ด๋ฌ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๋๋ฌธ์ OpenGL 2.0 ์ด์ ๊ณผ 3.0 ์ดํ๋ OpenGL์ ํฐ ํ์ ๊ณต์ ํ๊ธด ํ์ง๋ง, DirectX 9 ์ด์ ๊ณผ 10 ์ดํ์ ์ฐจ์ด์ฒ๋ผ ๋ ๋ ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ์ ์ฐจ์ด๊ฐ ์๋ ๊ฐ์ ๋ API๋ผ๊ณ ๋ณด๋ ํธ์ด ์ข๋ค. ๋ค๋ฅธ ๋น์ ๋ก C++98๊ณผ C++11์ ๊ด๊ณ๋ผ๊ณ ๋ณผ ์ ์๋ค.
ํนํ ์ด๋ฐ ๋ ๊ฑฐ์ OpenGL์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๊ณ ์ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ๋๋ฐ๋ค ์ผ๋ฐ ์๋น์์ฉ ๊ทธ๋ํฝ์นด๋ ๋ค์ ๋๋ผ์ด๋ฒ์ ํด๋น ์ฑ๋ฅ์ ์ ํ์ ๊ฑธ์ด ๋ ๊ด๊ณ๋ก ์ฟผ๋๋ก๋ ๋ผ๋ฐ์จ ํ๋ก์ ๊ฐ์ ์ํฌ์คํ ์ด์ ์ฉ ๋๋ผ์ด๋ฒ์์ ๋ด๋ ์ฑ๋ฅ์ ๋นํด ์์ฃผ ์ฒ์ฐธํ ์ฑ๋ฅ์ด ๋์ค๊ฒ ๋๋ค.
๊ทธ์ ๋นํด ์ ฐ์ด๋ ๊ธฐ๋ฐ์ ์ฌ์ฉํ๋ ๋ชจ๋ OpenGL 3.0 ์ดํ์ ๊ฒฝ์ฐ ์๋น์์ฉ ๊ทธ๋ํฝ์นด๋ ์์๋ ์ฑ๋ฅ์ฐจ์ด๊ฐ ์๊ฑฐ๋ ์คํ๋ ค ๋ ๋๋ค. Viewport 2.0 ๊ฐ ํฌํจ๋ Autodesk Maya(3.2)๋ Cinema 4D(4.1), Blender(3.3), ๋๋ ๋ (2016)(4.6)์ด ๊ทธ ์.
๊ทธ๋ฆฌ๊ณ Vulkan์ด ์๋์ ์ผ๋ก ๊ฐ๋ฐํ๊ธฐ ์ด๋ ต๊ณ ํ์ ํธํ๋ ์ง์ํ์ง ์๋ ์ํฉ์ด๋ผ, OpenGL์ ํ์ฉํ ํ๋ก์ ํธ๊ฐ ์์ง ๋ ๋ง์ด ๊ฐ๋ฐ๋๊ณ ์๋ค. ์ด๋ DirectX 12๋ ๋ง์ฐฌ๊ฐ์ง๋ก, DirectX 11๊ณผ 12๊ฐ ํฌ ํธ๋์ผ๋ก ๊ฐ๋ฐ๋๊ณ ์์ผ๋ฉฐ ํ์ฌ๊น์ง๋ DirectX 11์ ์ฌ์ฉ ๋น๋๊ฐ ๋ ๋์ ์ํฉ์ด๋ค.
๊ทธ๋ ์ง๋ง, OpenGL์ด ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ฉด์ ์ต์ ํ๋์จ์ด์ ๊ธฐ๋ฅ์ ์ง์ํด ๋๊ฐ ๊ฒ์ธ๊ฐ์ ๋ํด์๋ ํ์์ ์ด๋ค. ์๋ฅผ ๋ค์ด NVIDIA์ RTX ๊ทธ๋ํฝ์นด๋๊ฐ ์ง์ํ๋ ๋ ์ดํธ๋ ์ด์ฑ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ, Vulkan๊ณผ DirectX12 ๋ฒ์ ผ์ API๋ ๋ง๋ค์์ง๋ง, OpenGL์ ๊ฒฝ์ฐ ์ง์ํ์ง ์๋๋ค. OpenGL์ ๊ฒฝ์ฐ ์ด๋ฅผ ํ์ฉํ๋ ค๋ฉด Cuda ๊ธฐ๋ฐ์ Optix(Nvidia ์์ฒด API)๋ฅผ ์ฌ์ฉํด ๋ ์ดํธ๋ ์ด์ฑ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ค, OpenGL์์ ๊ฒฐ๊ณผ๋ฌผ ์ด๋ฏธ์ง๋ง ๋ฐ์์จ ํ ๊ทธ๋ ค์ผ ํ๋ค. ํ์ดํ๋ผ์ธ์ ์ฌ๊ตฌ์ฑํ๊ธฐ ์ด๋ ค์ด OpenGL์ ํน์ฑ ๋๋ฌธ์ธ๋ฏ ํ๋ค. ๋ฌผ๋ก , ๋ ๋ค๋ฅธ RTX ๊ทธ๋ํฝ์นด๋์ ํน์ง์ธ Mesh Shader์ ๊ฒฝ์ฐ ํ์ดํ๋ผ์ธ์ ์ฌ๊ตฌ์ฑํด์ผ ํ์์๋ ๋ถ๊ตฌํ๊ณ OpenGL๋ ์ง์์ ํด์ฃผ์์ง๋ง, ๋ ์ดํธ๋ ์ด์ฑ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ทธ๋ ์ง ์๋ค.
2.0 ๋ฒ์ ๋ถํฐ GLSL์ ์ด์ฉํ ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ ์์ผ๋ก ์ง์ํ๊ธฐ ์์ํ์ผ๋ ์ฌ์ค, ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ฒด๋ OpenGL์ ํ์๊ณผ ํจ๊ป ์์๋์๋ค. ์ด๊ธฐ์๋ ARB AL๋ผ๊ณ ๋ ๋ถ๋ฅด๋ Architecture Review Board ์ด์ ๋ธ๋ฆฌ ์ธ์ด๊ฐ ๊ทธ๊ฒ์ผ๋ก ๋ฒค๋ ์ ์ฅ์ธ ํ๋์จ์ด ์ ์กฐ์ฌ๋ค์ ์ฃผ๋๋ก ์ถ๊ฐ๋ ํ์ฅ ๊ธฐ๋ฅ ์ปจ์ [14]์ด๋ค๋ณด๋ OpenGL์ด ๊ทธ๋ ๊ฒ ์ค์์ ํ๋ ๋ฒ์ฉ์ฑ์ด ๋ฌด์๋์๊ธฐ ๋๋ฌธ์ ์ด๋ค ๊ทธ๋ํฝ์นด๋์์๋ ์ ๋์๊ฐ๊ณ ๋ค๋ฅธ ์ด๋ค ๊ทธ๋ํฝ์นด๋์์๋ ๋์๊ฐ์ง ์๋ ๋ฑ ์ ์ฒด์ ์ผ๋ก ์ค๊ตฌ๋๋ฐฉ์ผ ์๋ฐ์ ์์์ผ๋ฉฐ, 1998๋ 1.2.1 ๋ฒ์ ์ ๋ค์ด์์ผ ๋ฒ์ฉ์ฑ์ด ์๋ ARB_multitexture ๋ช ๋ น์ด๋ฅผ ์์์ผ๋ก 2001๋ 1.3 ๋ฒ์ ๋ถํฐ ARB๊ฐ ๋ถ์ฌ์ง ๊ณต์ ํ์ฅ ๊ธฐ๋ฅ๋ค์ด ๋๊ฑฐ ์ถ๊ฐ๋์์ง๋ง[15] ๊ฒฐ์ ์ ์ผ๋ก ์ด์ ๋ธ๋ฆฌ์ด๋ก ๋ค๋ค์ผ ํ๋ค๋ณด๋ ์ง์ ์ฅ๋ฒฝ์ด ์์ฒญ ๋์๋ค.
๊ฐ๋ ์์ฒด๋ 2000๋ 11์์ ๋ฐํ๋ MS์ DirectX 8.0์ ์ ฐ์ด๋ ์ด์ ๋ธ๋ฆฌ ์ธ์ด๋ณด๋ค 8๋ ์ด์ ๋จผ์ ๋ด์ธ์ด ๊ฒ์ ์์ ์๋ ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ผ๊ณ ๋ณผ ์ ์์ง๋ง 2002๋ ์ MS๊ฐ ์ง์ ์ฅ๋ฒฝ์ ๋ํญ ๋ฎ์ถ ๊ณ ์์ค ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ HLSL์ ์ฌ๋น ๋ฅด๊ฒ ๋ฐํํจ์ผ๋ก์จ OpenGL ์ธก์์๋ 2004๋ ์ ์ด์ ๋น์ทํ ๊ฐ๋ ์ ์ง๋ GLSL์ด ๋ฐํ๋์๋ค. 2.0 ๋ฒ์ ๊น์ง ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ด์ฉํ์ง ์๋ ์ด์ ์ ๋ฐฉ์์ผ๋ก๋ ํ๋ฉด์ ํด๋ฆฌ๊ณค์ ์ถ๋ ฅํ ์ ์์์ง๋ง, 3.0 ๋ฒ์ ๋ถํฐ๋ GLSL์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ํ๋ฉด์ ํด๋ฆฌ๊ณค์ ์ถ๋ ฅํ ์ ์๊ฒ๋ ํ์๊ฐ ๋์๋ค.
๊ต์ก๊ธฐ๊ด ๋ฑ์์๋ ์ต์ ๋ฒ์ ์ ์์งํ๊ธฐ ์ํด์๋ ๊ตฌ๋ฒ์ ๋ถํฐ ๊ฐ๋ ์ ์ตํ๋๊ฒ ์ค์ํ๋ค๋ ๋ช ๋ชฉ์ผ๋ก ์์ง๋ 1.0 ๋ฒ์ ์ ๊ฐ์ง๊ณ ์์ ์ ํ๊ณ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.[16] OpenGL 1.0์ ํด๋ฆฌ๊ณค ์ฐ์ฐ ๋ฑ ๊ฐ๋ ๋ง ์ตํ๋ ๊ฒ์ ์ถ์ฒํ๊ณ ์ค๋ฌด ๊ฐ๋ฐ์์๋ OpenGL 1.x ๋๋ 2.x ๋๋ฅผ ์ฌ์ฉํ ๊ฐ๋ฐ์ ์ถ์ฒํ์ง ์๋๋ค.
OpenGL 3.x ๋ถํฐ ๋ง์ ๊ฐ์ ์ด ์์์ผ๋ฉฐ, ํ ์ ๋ ์ด์ ๊ธฐ๋ฅ์ด ์ ์ธ๋ 3.3 ๋ฒ์ ์ ์ธ ์ ์๋ ์ ์ฌ์์น ์๋ ์ํฉ์ด๋ผ๋ฉด ์ต์ํ ๊ณ ์์ค ์ ฐ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ 2.0 ๋ฒ์ ์ด์์ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐํ๋ ๊ฒ์ด ์ถ์ฒ๋๋ค. ๋ํ์ ์ธ ์ฐจ์ด๋ก 2.0๊น์ง๋ primitives๋ฅผ ๊ทธ๋ฆด ๋ glBegin()๊ณผ glEnd()๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋นํด, 3.0 ์ดํ๋ถํฐ ์ด ๊ธฐ๋ฅ์ Deprecated ๋์๋ค. glBegin()์ ๋ํ์ ์ธ ๋ฌธ์ ์ ์ผ๋ก๋ ๋ฉํฐ์ฝ์ด ํ๋ก์ธ์๊ฐ ๋์คํ๋ ํ๋ ์ปดํจํ ํ๊ฒฝ์์ ๋ณ๋ ฌ ์ฒ๋ฆฌ๊ฐ ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ์ ์ ๊ผฝ์ ์ ์์ผ๋ฉฐ ๊ฐ ์ค๋ธ์ ํธ๋ฅผ ๊ทธ๋ ค ๋ผ ๋ glBegin()์ ํธ์ถํด์ผ ํ๋ฏ๋ก ์ค๋ฒํค๋ ๋ฌธ์ ๊ฐ ์ผ์ด๋ฌ๊ธฐ ๋๋ฌธ์ด๋ค.
์ด ๋๋ฌธ์ OpenGL 2.0 ์ด์ ๊ณผ 3.0 ์ดํ๋ OpenGL์ ํฐ ํ์ ๊ณต์ ํ๊ธด ํ์ง๋ง, DirectX 9 ์ด์ ๊ณผ 10 ์ดํ์ ์ฐจ์ด์ฒ๋ผ ๋ ๋ ํ์ดํ๋ผ์ธ ๊ตฌ์กฐ์ ์ฐจ์ด๊ฐ ์๋ ๊ฐ์ ๋ API๋ผ๊ณ ๋ณด๋ ํธ์ด ์ข๋ค. ๋ค๋ฅธ ๋น์ ๋ก C++98๊ณผ C++11์ ๊ด๊ณ๋ผ๊ณ ๋ณผ ์ ์๋ค.
ํนํ ์ด๋ฐ ๋ ๊ฑฐ์ OpenGL์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๊ณ ์ ํ์ดํ๋ผ์ธ์ ์ฌ์ฉํ๋๋ฐ๋ค ์ผ๋ฐ ์๋น์์ฉ ๊ทธ๋ํฝ์นด๋ ๋ค์ ๋๋ผ์ด๋ฒ์ ํด๋น ์ฑ๋ฅ์ ์ ํ์ ๊ฑธ์ด ๋ ๊ด๊ณ๋ก ์ฟผ๋๋ก๋ ๋ผ๋ฐ์จ ํ๋ก์ ๊ฐ์ ์ํฌ์คํ ์ด์ ์ฉ ๋๋ผ์ด๋ฒ์์ ๋ด๋ ์ฑ๋ฅ์ ๋นํด ์์ฃผ ์ฒ์ฐธํ ์ฑ๋ฅ์ด ๋์ค๊ฒ ๋๋ค.
๊ทธ์ ๋นํด ์ ฐ์ด๋ ๊ธฐ๋ฐ์ ์ฌ์ฉํ๋ ๋ชจ๋ OpenGL 3.0 ์ดํ์ ๊ฒฝ์ฐ ์๋น์์ฉ ๊ทธ๋ํฝ์นด๋ ์์๋ ์ฑ๋ฅ์ฐจ์ด๊ฐ ์๊ฑฐ๋ ์คํ๋ ค ๋ ๋๋ค. Viewport 2.0 ๊ฐ ํฌํจ๋ Autodesk Maya(3.2)๋ Cinema 4D(4.1), Blender(3.3), ๋๋ ๋ (2016)(4.6)์ด ๊ทธ ์.
๊ทธ๋ฆฌ๊ณ Vulkan์ด ์๋์ ์ผ๋ก ๊ฐ๋ฐํ๊ธฐ ์ด๋ ต๊ณ ํ์ ํธํ๋ ์ง์ํ์ง ์๋ ์ํฉ์ด๋ผ, OpenGL์ ํ์ฉํ ํ๋ก์ ํธ๊ฐ ์์ง ๋ ๋ง์ด ๊ฐ๋ฐ๋๊ณ ์๋ค. ์ด๋ DirectX 12๋ ๋ง์ฐฌ๊ฐ์ง๋ก, DirectX 11๊ณผ 12๊ฐ ํฌ ํธ๋์ผ๋ก ๊ฐ๋ฐ๋๊ณ ์์ผ๋ฉฐ ํ์ฌ๊น์ง๋ DirectX 11์ ์ฌ์ฉ ๋น๋๊ฐ ๋ ๋์ ์ํฉ์ด๋ค.
๊ทธ๋ ์ง๋ง, OpenGL์ด ์ง์์ ์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ฉด์ ์ต์ ํ๋์จ์ด์ ๊ธฐ๋ฅ์ ์ง์ํด ๋๊ฐ ๊ฒ์ธ๊ฐ์ ๋ํด์๋ ํ์์ ์ด๋ค. ์๋ฅผ ๋ค์ด NVIDIA์ RTX ๊ทธ๋ํฝ์นด๋๊ฐ ์ง์ํ๋ ๋ ์ดํธ๋ ์ด์ฑ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ, Vulkan๊ณผ DirectX12 ๋ฒ์ ผ์ API๋ ๋ง๋ค์์ง๋ง, OpenGL์ ๊ฒฝ์ฐ ์ง์ํ์ง ์๋๋ค. OpenGL์ ๊ฒฝ์ฐ ์ด๋ฅผ ํ์ฉํ๋ ค๋ฉด Cuda ๊ธฐ๋ฐ์ Optix(Nvidia ์์ฒด API)๋ฅผ ์ฌ์ฉํด ๋ ์ดํธ๋ ์ด์ฑ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋ค, OpenGL์์ ๊ฒฐ๊ณผ๋ฌผ ์ด๋ฏธ์ง๋ง ๋ฐ์์จ ํ ๊ทธ๋ ค์ผ ํ๋ค. ํ์ดํ๋ผ์ธ์ ์ฌ๊ตฌ์ฑํ๊ธฐ ์ด๋ ค์ด OpenGL์ ํน์ฑ ๋๋ฌธ์ธ๋ฏ ํ๋ค. ๋ฌผ๋ก , ๋ ๋ค๋ฅธ RTX ๊ทธ๋ํฝ์นด๋์ ํน์ง์ธ Mesh Shader์ ๊ฒฝ์ฐ ํ์ดํ๋ผ์ธ์ ์ฌ๊ตฌ์ฑํด์ผ ํ์์๋ ๋ถ๊ตฌํ๊ณ OpenGL๋ ์ง์์ ํด์ฃผ์์ง๋ง, ๋ ์ดํธ๋ ์ด์ฑ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ทธ๋ ์ง ์๋ค.
3.1.1. OpenGL ๋ฒ์ ์ผ๋[ํธ์ง]
- OpenGL 1.0 : 1992๋ 1์ (EXT ๊ณ์ด, ๊ทธ๋ฐ์ ๋ ์์ ์ธ ์ด๋ฆ์ด ๋ถ์ฌ์ง ํ์ฅ ๋ช ๋ น์ด ํฌํจ)
- OpenGL 1.1 : 1997๋ 3์
- OpenGL 1.2 : 1998๋ 3์
- OpenGL 1.2.1 : 1998๋ 10์ (ARB ๊ณ์ด์ ํ์ฅ ๋ช ๋ น์ด ์ถ๊ฐ)
- OpenGL 1.3 : 2001๋ 8์
- OpenGL 1.4 : 2002๋ 7์
- OpenGL 1.5 : 2003๋ 7์
- OpenGL 2.0 : 2004๋ 9์ (GLSL 1.1 ํฌํจ)
- OpenGL 2.1 : 2006๋ 7์ (GLSL 1.2 ํฌํจ)
- OpenGL 3.0 : 2008๋ 8์ (GLSL 1.3 ํฌํจ)
- OpenGL 3.1 : 2009๋ 3์ (GLSL 1.4 ํฌํจ)
- OpenGL 3.2 : 2009๋ 8์ (GLSL 1.5 ํฌํจ)
- OpenGL 3.3 : 2010๋ 3์ (GLSL 3.3 ํฌํจ)
- OpenGL 4.0 : 2010๋ 3์ (GLSL 4.0 ํฌํจ)
- OpenGL 4.1 : 2010๋ 7์ (GLSL 4.1 ํฌํจ)
- OpenGL 4.2 : 2011๋ 8์ (GLSL 4.2 ํฌํจ)
- OpenGL 4.3 : 2012๋ 8์ (GLSL 4.3 ํฌํจ)
- OpenGL 4.4 : 2013๋ 7์ (GLSL 4.4 ํฌํจ)
- OpenGL 4.5 : 2014๋ 8์ (GLSL 4.5 ํฌํจ)
- OpenGL 4.6 : 2017๋ 7์ (GLSL 4.6 ํฌํจ)
3.2. OpenGL ES[ํธ์ง]
์ต์ ๋ฒ์ ์ 2015๋
8์์ ๋ฐํํ 3.2 ๋ฒ์ ์ด๋ค. ์๋ฒ ๋๋ ์์คํ
๋ฑ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ช ๊ฐ์ง ์ ์ฌ์ฉ๋์ง ์๋ ํจ์๋ฅผ ์ ๊ฑฐํ API. ์๋๋ก์ด๋ ์์คํ
๊ณผ iOS์์ ๊ทธ๋ํฝ ๊ฐ์์ ์ํด ์ฌ์ฉ๋๋ค.
OpenGL ES 1.0์ OpenGL 1.3์, OpenGL ES 1.1์ OpenGL 1.5๋ฅผ, OpenGL ES 2.0์ OpenGL 2.0์ ๋ฒ ์ด์ค๋ก ๋ง๋ค์ด์ก๋ค. ๋ค๋ง, OpenGL ES 2.0์ OpenGL 2.1 ๋ฒ์ ๊น์ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ ๊ณ ์ ํ์ดํ๋ผ์ธ์ด ์ ๊ฑฐ[17]๋์๊ธฐ ๋๋ฌธ์ ์ฌ์ค์ GLSL์ด ํ์๊ฐ ๋ OpenGL 3.0๊ณผ ๋น์ทํ๊ฒ ์ฌ์ฉ๋๋ค. OpenGL ES 3.0์ OpenGL 4.3์ ๋ฒ ์ด์ค๋ก ๋ง๋ค์ด์ก๋ค.
OpenGL ES 1.0์ OpenGL 1.3์, OpenGL ES 1.1์ OpenGL 1.5๋ฅผ, OpenGL ES 2.0์ OpenGL 2.0์ ๋ฒ ์ด์ค๋ก ๋ง๋ค์ด์ก๋ค. ๋ค๋ง, OpenGL ES 2.0์ OpenGL 2.1 ๋ฒ์ ๊น์ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ ๊ณ ์ ํ์ดํ๋ผ์ธ์ด ์ ๊ฑฐ[17]๋์๊ธฐ ๋๋ฌธ์ ์ฌ์ค์ GLSL์ด ํ์๊ฐ ๋ OpenGL 3.0๊ณผ ๋น์ทํ๊ฒ ์ฌ์ฉ๋๋ค. OpenGL ES 3.0์ OpenGL 4.3์ ๋ฒ ์ด์ค๋ก ๋ง๋ค์ด์ก๋ค.
3.2.1. OpenGL ES ๋ฒ์ ์ผ๋[ํธ์ง]
- OpenGL ES 1.0 : 2003๋ 7์ (OpenGL 1.3 ๊ธฐ๋ฐ)
- OpenGL ES 1.1 : 2004๋ 9์ (OpenGL 1.5 ๊ธฐ๋ฐ)
- OpenGL ES 2.0 : 2007๋ 3์ (OpenGL 2.0~3.0 ๊ธฐ๋ฐ)
- OpenGL ES 3.0 : 2012๋ 8์ (OpenGL 4.3 ๊ธฐ๋ฐ)
- OpenGL ES 3.1 : 2014๋ 3์
- OpenGL ES 3.2 : 2015๋ 8์
3.3. Vulkan[ํธ์ง]
์ด ๋ฌธ์๋ฅผ ์ฐธ๊ณ .