์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
Open Graphics Library
ํ™ˆํŽ˜์ด์ง€

1. ๊ฐœ์š”2. ์ƒ์„ธ3. ์ข…๋ฅ˜
3.1. OpenGL
3.1.1. OpenGL ๋ฒ„์ „ ์ผ๋žŒ
3.2. OpenGL ES
3.2.1. OpenGL ES ๋ฒ„์ „ ์ผ๋žŒ
3.3. Vulkan
4. ๊ด€๋ จ ๋ฌธ์„œ

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์ด ์ตœ์ดˆ ๊ณต๊ฐœ๋˜์—ˆ๋‹ค.

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๋„ ์ง€์›์„ ํ•ด์ฃผ์—ˆ์ง€๋งŒ, ๋ ˆ์ดํŠธ๋ ˆ์ด์‹ฑ ๊ฐ€์† ๊ธฐ๋Šฅ์€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

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์„ ๋ฒ ์ด์Šค๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค.

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[ํŽธ์ง‘]

์ด ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ .

4. ๊ด€๋ จ ๋ฌธ์„œ[ํŽธ์ง‘]