๋ถ๋ฅ:๊ทธ๋ํฝ ํด
์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
์ ์ | ๋ณผ๋๋ |
ํ๋ซํผ | ์๋์ฐ |
์ฅ๋ฅด | ๊ทธ๋ํฝ API |
1. ๊ฐ์[ํธ์ง]
BGI(Borland Graphic Interface, ๋ณผ๋๋ ๊ทธ๋ํฝ ์ธํฐํ์ด์ค)์ ์๋์ฐ ๋ฒ์ . ๋ณผ๋๋ C++ 5.x ์ดํ๋ถํฐ ํ์ฌ๋ ๊ทธ๋ํฝ API.
๊ณผ๊ฑฐ์ ๊ทธ๋ํฝ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๊ฐ์ฅ ๋์ค์ ์ธ IBM PC์์๋ ์ธํฐ๋ฝํธ ๋ชจ๋๋ฅผ ํตํด ์ง์ ๊ทธ๋ํฝ ๋จ์ ์ ๊ทผํ์ฌ ๋ชจ๋ํฐ์ ์ฃผ์ฌํ๋ ๊ต์ฅํ ๋ถํธํ ๋ฐฉ๋ฒ์ด๋ค. ํ์ง๋ง, ๋์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋์จ์ด์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ API๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ณด๋ค ์ต์ ํ ํ ์๋ ์๋ค. ์ข ๋ ํธํ ๊ทธ๋ํฝ ์์ ์ ์ํด ๋ณผ๋๋๋ ์์ฌ์ ํฐ๋ณด C/C++์ BGI๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ทธ๋ํฝ API๋ฅผ ํฌํจ์์ผฐ๋ค. ๋์ค ์๋๋ฅผ ์ง๋ ์๋์ฐ ์๋๋ก ์ ์ด๋ค๋ฉด์ ์๋์ฐ ํ๊ฒฝ์์๋ ์ปดํ์ผ ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๊ฒ์ด Winbgi์ด๋ค.
๋๋ถ์ด ๋์ด ์ง๊ธํ ํ๋ก๊ทธ๋๋จธ๋ผ๋ฉด ๋ค๋ค ์๋งํ conio.h(์ฝ์ Input/Output) ๋ผ๋ ๋น์ ๊ท ํค๋ํ์ผ๋ ํฌํจ์์ผฐ๋ค. stdio.h ์ ๋์ฒดํ๋ฉด์ ์ข ๋ ์ฌ์ฉํ๊ธฐ ํธํ๊ณ ์ ์ฉํ ํจ์๋ค(๋ํ์ ์ผ๋ก getch()๋ผ๋ ๊ฐ)์ด ํฌํจ๋์๋ค. ํ ๋๋ ์์ฒญ๋๊ฒ ์ฌ์ฉํ์ง๋ง ์ง๊ธ์ GCC์ ํธํ์ด ์๋๋ ์ฃผ์. ์ด๋ค๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋ค.
๊ณผ๊ฑฐ์ ๊ทธ๋ํฝ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ ๊ฐ์ฅ ๋์ค์ ์ธ IBM PC์์๋ ์ธํฐ๋ฝํธ ๋ชจ๋๋ฅผ ํตํด ์ง์ ๊ทธ๋ํฝ ๋จ์ ์ ๊ทผํ์ฌ ๋ชจ๋ํฐ์ ์ฃผ์ฌํ๋ ๊ต์ฅํ ๋ถํธํ ๋ฐฉ๋ฒ์ด๋ค. ํ์ง๋ง, ๋์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ํ๋์จ์ด์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ API๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ณด๋ค ์ต์ ํ ํ ์๋ ์๋ค. ์ข ๋ ํธํ ๊ทธ๋ํฝ ์์ ์ ์ํด ๋ณผ๋๋๋ ์์ฌ์ ํฐ๋ณด C/C++์ BGI๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ทธ๋ํฝ API๋ฅผ ํฌํจ์์ผฐ๋ค. ๋์ค ์๋๋ฅผ ์ง๋ ์๋์ฐ ์๋๋ก ์ ์ด๋ค๋ฉด์ ์๋์ฐ ํ๊ฒฝ์์๋ ์ปดํ์ผ ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๊ฒ์ด Winbgi์ด๋ค.
๋๋ถ์ด ๋์ด ์ง๊ธํ ํ๋ก๊ทธ๋๋จธ๋ผ๋ฉด ๋ค๋ค ์๋งํ conio.h(์ฝ์ Input/Output) ๋ผ๋ ๋น์ ๊ท ํค๋ํ์ผ๋ ํฌํจ์์ผฐ๋ค. stdio.h ์ ๋์ฒดํ๋ฉด์ ์ข ๋ ์ฌ์ฉํ๊ธฐ ํธํ๊ณ ์ ์ฉํ ํจ์๋ค(๋ํ์ ์ผ๋ก getch()๋ผ๋ ๊ฐ)์ด ํฌํจ๋์๋ค. ํ ๋๋ ์์ฒญ๋๊ฒ ์ฌ์ฉํ์ง๋ง ์ง๊ธ์ GCC์ ํธํ์ด ์๋๋ ์ฃผ์. ์ด๋ค๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋ค.
2. ํน์ง[ํธ์ง]
์ต๋ ์ฅ์ ์ '์ฌ์ฉํ๊ธฐ ์ฝ๋ค' ์ด๋ค. ๋ค๋ฅธ ๊ทธ๋ํฝ API์ธ OpenGL๊ณผ ๋ค์ด๋ ํธX์ ๋น๊ตํด ๋ณด๋ฉด, ์ด๊ธฐํํ๋๋ฐ ์ฝ๋ฉ์ด ๋ช์ค ์ฐจ์ด๊ฐ ๋๋์ง ํ์ฐํ ๋๋ฌ๋๋ค. ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ธ Winbgim ์ 'initwindow()' ํ ์ค์ด๋ฉด ์ถฉ๋ถํ๋ค. ์ด๊ฒ ์ผ๋ง๋ ํ๊ธฐ์ ์ธ๊ฐํ๋ฉด ๊ทธ๋๋ง ์ฝ๋ค๊ณ ์๋ ค์ง GLUT(OpenGL Utility Toolkit)๋ง์ ๋ 10์ค ์ด์์ด ํ์ํ๋ค.
ํ์ง๋ง ์ฐ๊ธฐ ์ฌ์ด ๋งํผ 3D ๊ธฐ๋ฅ์ ๊ฑฐ์ ์ง์ํ์ง ์๋๋ค. ์ด๋ก ์ ์ผ๋ก 3D ์์ง์ ๊ตฌํํ ์ ์๊ธฐ๋ ํ์ง๋ง ์ค๋ น ๊ตฌํํ๋ค๊ณ ํ๋๋ผ๋ ๋งค์ฐ ๋๋ฆด๊ฒ์ด๋ค. ์ ์ด์ 2D ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ก ๊ฐ๋ฐ๋ ๋งํผ 3D์ ๊ณ ๋ คํ์ง ์์์ ๋ฟ๋๋ฌ, 2D ๊ทธ๋ํฝ ์ญ์, ํ์ฌ์ ๊ทธ๋ํฝ API๋ค๊ณผ ๋น๊ตํด๋ด๋ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ง ์ง์ํ๋ค. ๋์ค ๋ฒ์ BGI๋ 640x480๊น์ง ์ง์ํ์ผ๋ฉฐ 16์๋ฐ์ ํํํ ์ ์์๋ค. ๋น์์๋ ์๋นํ ์ ์ฝ์ด์๊ธฐ ๋๋ฌธ์ ๋ง์ ๋์ค ๊ฒ์ ๊ฐ๋ฐ์๋ค์ VGA ์ธํฐ๋ฝํธ๋ฅผ ํตํด 256์์ ๊ตฌํํ๋ค. VGA ๋ชจ๋์ ์ฌ๊ฐํ ์ ์ ํด์๋๊ฐ 320x200์ผ๋ก ๋์ฑ ์ข์์ง๋ค๋ ๊ฒ๊ณผ ํ์ด์ง๊ฐ ๋จ ํ๊ฐ ๋ฐ์ ์๋ค๋ ์ ์ด๋ค. ๋๋ถ์ ๊ฐ๋ฐ์๋ค์ ๊ฐ์ ํธ๋ฒ์ ๋์ํ์ฌ ํ์ด์ง ๋น์ค๋ฌด๋ฆฌํ ๊ฒ์ ๋ฌด๋ ค 4๊ฐ๋ ๋ฐ๊ฒฌํ๋๋ฐ ์ฑ๊ณตํ๋ค.
ํ์ฌ ๋ณผ๋๋์ฌ๋ Winbgi์ ๋ํ ๊ณต์์ ์ธ ์ง์์ ์ค๋จํ ์ํ์ด๋ฉฐ, ๊ฐ์ฅ ์ต์ ์ ๋ฒ์ ์ ๋ง์ดํฌ๋ก์ํํธ ๋น์ฃผ์ผ C ++ 6.0 ์์ ์ปดํ์ผ ๊ฐ๋ฅํ๋ค. ๊ทธ ์ดํ ๋ฒ์ ์ธ .net ๋ฒ์ ์์๋ ๋ง์ปค์ ์ถฉ๋์ด ์ผ์ด๋๋ค. ์ถฉ๋์ด ๋ฐ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง์ปค์์ ์ ์ธ์ํค๋ฉด ์ธ ์๋ ์์ง๋ง ๊ทธ๋๋ ์ฌ์ ํ ๋ถ์์ ํ๋ค. ๋์ , ๋ฏธ๊ตญ ์ฝ๋ก๋ผ๋ ๋ํ๊ต ์ปดํจํฐ ๊ณตํ๊ณผ ๊ต์์ธ ๋ง์ดํด ๋ฉ์ธ(Michael Main)๋ฐ์ฌ๊ฐ ์์ ์ ๊ต์ฌ๋ก ์ฌ์ฉํ๊ธฐ ์ํด GCC์ ํธํ์ด ๋๋ Winbgim์ด๋ผ๋ ๊ทธ๋ํฝ API๋ก ์๋กญ๊ฒ ์ฌํ์์์ผฐ๋ค. ์ด ๋ฒ์ ์ Winbgi์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ํ ๋ฟ๋ง ์๋๋ผ, ์๋์ฐ ๊ทธ๋ํฝ ์ ์ ์ธํฐํ์ด์ค ๊ตฌํ์ ์ํด ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ์ถ๊ฐํ์๋ค. ๋๋ถ์ด conio.h์ ์๋ ๋น์ ๊ท ํจ์๋ค๋ ๋ช๊ฐ์ง ์ถ๊ฐํ์๋ค. ์๋ฅผ ๋ค๋ฉด delay(), kbhit(). ๋์ธ๋ฐฐ์ค๋ฝ๊ฒ๋ ์์ ์ ๋ฃ๋ ํ์๋ฟ๋ง ์๋๋ผ, ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ ์ํด์ ์นํ ํ๊ต ์๋ฒ์ ์์ค์ ๋ฐ์ด๋๋ฆฌ ํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ด์ผ ๊น์ง ์ฌ๋ ค์ ๋ฐฐํฌํ๊ณ ์๋ค.
Visual Studio ๋ฒ์
GCC ๋ฒ์
Winbgim ํจ์ ๋ชฉ๋ก
ํ์ง๋ง ์ฐ๊ธฐ ์ฌ์ด ๋งํผ 3D ๊ธฐ๋ฅ์ ๊ฑฐ์ ์ง์ํ์ง ์๋๋ค. ์ด๋ก ์ ์ผ๋ก 3D ์์ง์ ๊ตฌํํ ์ ์๊ธฐ๋ ํ์ง๋ง ์ค๋ น ๊ตฌํํ๋ค๊ณ ํ๋๋ผ๋ ๋งค์ฐ ๋๋ฆด๊ฒ์ด๋ค. ์ ์ด์ 2D ๊ทธ๋ํฝ ์ธํฐํ์ด์ค๋ก ๊ฐ๋ฐ๋ ๋งํผ 3D์ ๊ณ ๋ คํ์ง ์์์ ๋ฟ๋๋ฌ, 2D ๊ทธ๋ํฝ ์ญ์, ํ์ฌ์ ๊ทธ๋ํฝ API๋ค๊ณผ ๋น๊ตํด๋ด๋ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ง ์ง์ํ๋ค. ๋์ค ๋ฒ์ BGI๋ 640x480๊น์ง ์ง์ํ์ผ๋ฉฐ 16์๋ฐ์ ํํํ ์ ์์๋ค. ๋น์์๋ ์๋นํ ์ ์ฝ์ด์๊ธฐ ๋๋ฌธ์ ๋ง์ ๋์ค ๊ฒ์ ๊ฐ๋ฐ์๋ค์ VGA ์ธํฐ๋ฝํธ๋ฅผ ํตํด 256์์ ๊ตฌํํ๋ค. VGA ๋ชจ๋์ ์ฌ๊ฐํ ์ ์ ํด์๋๊ฐ 320x200์ผ๋ก ๋์ฑ ์ข์์ง๋ค๋ ๊ฒ๊ณผ ํ์ด์ง๊ฐ ๋จ ํ๊ฐ ๋ฐ์ ์๋ค๋ ์ ์ด๋ค. ๋๋ถ์ ๊ฐ๋ฐ์๋ค์ ๊ฐ์ ํธ๋ฒ์ ๋์ํ์ฌ ํ์ด์ง ๋น์ค๋ฌด๋ฆฌํ ๊ฒ์ ๋ฌด๋ ค 4๊ฐ๋ ๋ฐ๊ฒฌํ๋๋ฐ ์ฑ๊ณตํ๋ค.
ํ์ฌ ๋ณผ๋๋์ฌ๋ Winbgi์ ๋ํ ๊ณต์์ ์ธ ์ง์์ ์ค๋จํ ์ํ์ด๋ฉฐ, ๊ฐ์ฅ ์ต์ ์ ๋ฒ์ ์ ๋ง์ดํฌ๋ก์ํํธ ๋น์ฃผ์ผ C ++ 6.0 ์์ ์ปดํ์ผ ๊ฐ๋ฅํ๋ค. ๊ทธ ์ดํ ๋ฒ์ ์ธ .net ๋ฒ์ ์์๋ ๋ง์ปค์ ์ถฉ๋์ด ์ผ์ด๋๋ค. ์ถฉ๋์ด ๋ฐ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง์ปค์์ ์ ์ธ์ํค๋ฉด ์ธ ์๋ ์์ง๋ง ๊ทธ๋๋ ์ฌ์ ํ ๋ถ์์ ํ๋ค. ๋์ , ๋ฏธ๊ตญ ์ฝ๋ก๋ผ๋ ๋ํ๊ต ์ปดํจํฐ ๊ณตํ๊ณผ ๊ต์์ธ ๋ง์ดํด ๋ฉ์ธ(Michael Main)๋ฐ์ฌ๊ฐ ์์ ์ ๊ต์ฌ๋ก ์ฌ์ฉํ๊ธฐ ์ํด GCC์ ํธํ์ด ๋๋ Winbgim์ด๋ผ๋ ๊ทธ๋ํฝ API๋ก ์๋กญ๊ฒ ์ฌํ์์์ผฐ๋ค. ์ด ๋ฒ์ ์ Winbgi์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ํ ๋ฟ๋ง ์๋๋ผ, ์๋์ฐ ๊ทธ๋ํฝ ์ ์ ์ธํฐํ์ด์ค ๊ตฌํ์ ์ํด ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ์ถ๊ฐํ์๋ค. ๋๋ถ์ด conio.h์ ์๋ ๋น์ ๊ท ํจ์๋ค๋ ๋ช๊ฐ์ง ์ถ๊ฐํ์๋ค. ์๋ฅผ ๋ค๋ฉด delay(), kbhit(). ๋์ธ๋ฐฐ์ค๋ฝ๊ฒ๋ ์์ ์ ๋ฃ๋ ํ์๋ฟ๋ง ์๋๋ผ, ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค์ ์ํด์ ์นํ ํ๊ต ์๋ฒ์ ์์ค์ ๋ฐ์ด๋๋ฆฌ ํ์ผ, ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ด์ผ ๊น์ง ์ฌ๋ ค์ ๋ฐฐํฌํ๊ณ ์๋ค.
Visual Studio ๋ฒ์
GCC ๋ฒ์
Winbgim ํจ์ ๋ชฉ๋ก
[1] ์ฌ์ค์ winbgim์ผ๋ก ํ ์ ์๋ ๋ชจ๋ ๊ฒ์ ๋ณด์ฌ์ค๋ค. ์คํ๋ผ์ดํธ๋ ๊ตฌํ๋๋ค.