์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
์ œ์ž‘
๋ณผ๋žœ๋“œ
ํ”Œ๋žซํผ
์œˆ๋„์šฐ
์žฅ๋ฅด
๊ทธ๋ž˜ํ”ฝ 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์™€ ํ˜ธํ™˜์ด ์•ˆ๋˜๋‹ˆ ์ฃผ์˜. ์“ด๋‹ค๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.

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 ํ•จ์ˆ˜ ๋ชฉ๋ก

[1] ์‚ฌ์‹ค์ƒ winbgim์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ณด์—ฌ์ค€๋‹ค. ์Šคํ”„๋ผ์ดํŠธ๋„ ๊ตฌํ˜„๋œ๋‹ค.