์ฐธ๊ณ ์ฌ์ดํธ
• gofo-coding๋์ ํฐ์คํ ๋ฆฌ
๐ฟ OpenGL
Open Graphics Library๋ก, Graphics ํ๋ก๊ทธ๋๋ฐ์ ์ํ API์ ๋๋ค.
(Library ์ด๋ฆ๊ณผ ๋ฌ๋ฆฌ API์ด๋ค.)
๐ Library
• Collection of functions, pre-compiled routines or reusable components of code
→ ์ฝ๋๋ฅผ ๋ชจ์๋์ ๊ฒ
• ์ฝ๋์ ๋ฐ๋ณต์ ์ค์ด๊ณ ์ฌ์ฌ์ฉ ํ ์ ์๊ฒ ํ๋ค.
• ํ๋ก๊ทธ๋๋ฐ ์๋๋ฅผ ๋จ์ถํ ์ ์๋ค.
๐ API
• Collection of software protocols
→ ์ธํฐํ์ด์ค๋ฅผ ๋ชจ์๋์ ๊ณณ
• ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๋ง๋ค์ด์ ธ์์ ์ ์๋ค.
• ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ๋ค๋ฅธ Utility Library๊ฐ ํ์
OS๋ OpenGL ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ์ฌ, GPU๋ OpenGL implementation์ธ ๊ทธ๋ํฝ ์นด๋ ๋๋ผ์ด๋ฒ๋ฅผ ์ ๊ณตํ๋ค.
์๋ฅผ ๋ค์ด, windows์์๋ *opengl32.dll์ ์ ๊ณตํ๊ณ , GPU๋ Nivida Driver๋ฑ์ ์ ๊ณตํฉ๋๋ค.
.dllํ์ผ: ๋์ ๋งํฌ(Dynamic Link)๋ฅผ ์ฌ์ฉํ๋ค.
๋์ ๋งํฌ๋ ์ปดํ์ผ์์ ํจ์์ ์ฝ๋๊ฐ ์คํ ํ์ผ์ ๋ณต์ฌ๋๋ ๊ฒ์ด ์๋, ์คํ ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
DLL์ ์ฅ์
• ํ ์ฝ๋๋ฅผ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์์ ๋์์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ฝ๋๋ค.
• ์ ์ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์คํ ํ์ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์๊ฐ ํฌํจ๋์ด ์คํํ์ผ์ด ์ปค์ง์ง๋ง DLL์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ์๋ค.
• DLL์ ๊ต์ฒดํ์ฌ ํ๋ก๊ทธ๋จ์ ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ฝ๋ค.
• ๋ฆฌ์์ค์ ๊ต์ฒด๊ฐ ๊ฐ๋ฅํ๋ค.
• ์ฝ๋์ ์์ด ์ ์ด์ง๋ฏ๋ก ๋๋ฒ๊น ์ด ์ฉ์ดํด์ง๋ค.
• ํผํฉ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํด์ง๋ค.
• ํ๋ก๊ทธ๋๋จธ๋ผ๋ฆฌ ๋ถ๋ด ์์ ์ด ์ฉ์ดํ๋ฉฐ ์ฌ์ฌ์ฉ์ฑ์ด ๋ฐ์ด๋๋ค.
์ฉ์ด | ์ค๋ช |
์ ์ ๋งํฌ | ์ปดํ์ผ ์์ ํจ์๊ฐ ์คํ ํ์ผ์ ์ฐ๊ฒฐ๋๋ค. ์คํํ์ผ์ ํจ์์ ์ฝ๋๊ฐ ๋ณต์ฌ๋๊ธฐ ๋๋ฌธ์ ์คํ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ ๋จ์ ์ด ์์ง๋ง ์คํ ํ์ผ์ ์์ ํ ๋จ๋ ์คํ ํ์ผ์ด ๋๋ค. ์คํ ํ์ผ์ ํจ์์ ์ฝ๋๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ์ด ๋๋๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ(.lib)์ด ์์ด๋ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค. |
๋์ ๋งํฌ | ์คํ ์์ ํจ์๊ฐ ์คํ ํ์ผ์ ์ฐ๊ฒฐ๋๋ค. ์คํ ํ์ผ์๋ ํธ์ถํ ํจ์์ ์ ๋ณด๋ง ํฌํจ๋๊ณ ์ค์ ํจ์ ์ฝ๋๋ ๋ณต์ฌ๋์ง ์์ผ๋ฏ๋ก ์คํํ์ผ์ ํฌ๊ธฐ๊ฐ ์์์ง๋ค. ํ์ง๋ง ์คํํ์ผ์ ํจ์์ ๋ํ ์ ๋ณด๋ง ๊ฐ์ง๊ณ ์์ ๋ฟ ์ค์ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์ผ๋ฏ๋ก ํ๋ก๊ทธ๋จ ์คํ ์์ .dll์ด ๊ผญ ์์ด์ผํ๋ค. |
A์ Bํ๋ก๊ทธ๋จ์์ ๊ฐ์ dll ํ์ผ์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ์ ๋, ํ๋ก๊ทธ๋จ์ ์คํํ๋ฉด dll ํ์ผ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ก๋ ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ .dll์ ๋ฉ๋ชจ๋ฆฌ์ ์ค๋ณต์ผ๋ก ๋ก๋๋์ง ์๊ณ ํ ๋ฒ๋ง ๋ก๋๋๋ฉฐ, .dll ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ์ฌ dll ํจ์๋ฅผ ์์ ๋กญ๊ฒ ํธ์ถํ๋ค. (๋จ, ๋ณ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค์ ํ ๋น ๋ฐ์์ผํ๋ฉฐ ๋ฐ์ดํฐ๋ ๊ณต์ ๋์ง ์๋๋ค.)
dll์ด ๋ฉ๋ชจ๋ฆฌ์์ ๋ด๋ ค๊ฐ๋ ์์ ์ .dll์ด ์์กดํ๋ ํ๋ก๊ทธ๋จ์ด ๋ชจ๋ ์ข ๋ฃ๋์์ ๋, ๋ฉ๋ชจ๋ฆฌ์์ ๋ด๋ ค๊ฐ๋ค.
๐ Legacy OpenGL
• Fixed-function hardware๋ง ์ฌ์ฉํ ์ ์์ ๋ ๊ฐ๋ฐ๋์๋ค.
• *Shader๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
• ๋ฐฐ์ฐ๊ธฐ์ ์ฝ๊ณ ๋น ๋ฅธ ํ๋กํ ํ์ ๊ฐ๋ฐ์ ์ ํฉํ์ง๋ง OpenGL 3.0์ดํ๋ก ์ ๋ฐ์ดํธ ๋์ง ์์๋ค.
๐ Modern OpenGL
• ํ์ฌ ํ๋์จ์ด ์์ค์์ ๊ฐ๋ฐ๋์๋ค.
• Shader๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
• ๋ ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ์ง๋ง ํ๋ก๊ทธ๋จ์ด์ด Legacy OpenGL์ ๋นํด ์ด๋ ต๋ค.
*Shader: ์ํํธ์จ์ด ๋ช ๋ น์ ์งํฉ์ผ๋ก ์ฃผ๋ก ๊ทธ๋ํฝ ํ๋์จ์ด์ ๋ ๋๋ง ํจ๊ณผ๋ฅผ ๊ณ์ฐํ๋๋ฐ ์ฌ์ฉ๋๋ค.