DirectX Programming (1)
----------------------------------------------------------------------
º» °Á´ ÇÁ·Î±×·¡¹Ö¼¼°è 98³â 10¿ùÈ£¿¡ ½Ç¸° ³»¿ëÀ» ¹ßÃéÇÑ °ÍÀÔ´Ï´Ù.
DirectX¸¦ óÀ½½ÃÀÛÇϽô ºÐ¿¡°Ô ¸¹Àº µµ¿òÀÌ µÇ±æ ¹Ù¶ø´Ï´Ù.
----------------------------------------------------------------------
¿äÁò ±¹³»¿¡¼µµ ¼ÒÇÁÆ®¿þ¾î ¼öÃâÀÇ ¹Ù¶÷ÀÌ Àϰí ÀÖ´Ù. ¼ÒÇÁÆ®¿þ¾î Áß¿¡
¼ °ÔÀÓ ¼ÒÇÁÆ®¿þ¾î¸¸Å ¼öÃâÀÌ ¿ëÀÌÇÑ ºÐ¾ßµµ ¾øÀ» °ÍÀÌ´Ù.
ƯÈ÷ ³×Æ®¿öÅ©¸¦ ÅëÇÑ ¿Â¶óÀÎ °ÔÀÓÀÌ °¢±¤¹Þ°í Àִµ¥ ÀÌ Æ¯ÁýÀÌ ±×·± ºÐ
¾ß¿¡ °ü½ÉÀÖ´Â µ¶Àڵ鿡°Ô ½ÃÀÛÇÒ ¼ö ÀÖ´Â Åä´ë°¡ µÇ¾úÀ¸¸é ÇÏ´Â ¹Ù·¥ÀÌ´Ù.
¿©±â¿¡¼´Â ¿¹Á¦ ÇÁ·Î±×·¥ Á¦ÀÛ¿¡ ºñÁÖ¾ó C++ 5.0À» »ç¿ëÇÒ °ÍÀÌ´Ù. MFC
¸¦ »ç¿ëÇØ ÇÁ·Î±×·¡¹ÖÇÏÁö´Â ¾ÊÀ» °ÍÀ̰í SDK¸¦ »ç¿ëÇØ API·Î ÇÁ·Î±×·¡¹Ö
À» ÇÒ °ÍÀÌ´Ù. MFC¸¦ ÀÌ¿ëÇÒ °æ¿ì¿¡´Â ´ÙÀÌ·ºÆ®X ÀÚüº¸´Ù´Â MFC¿¡ ´ëÇÑ
Áö½ÄÀÌ ÇÊ¿äÇØ ¼³¸íÇϰíÀÚ ÇÏ´Â ÃÊÁ¡ÀÌ Èå·ÁÁú ¼ö Àֱ⠶§¹®ÀÌ´Ù.
´ÙÀÌ·ºÆ®XÀÇ ¼Ò°³
´ÙÀÌ·ºÆ®X¶õ ?
¾ó¸¶ Àü ´ÙÀÌ·ºÆ®X 6.0ÀÌ ¹ßÇ¥µÇ¾ú´Ù. ÇÊÀÚ´Â ´ÙÀÌ·ºÆ®X 5.0¿¡ ±â¹ÝÇÏ¿©
¿ø°í¸¦ ÀÛ¼ºÇÏ¿´´Âµ¥ »ç½Ç ´ÙÀÌ·ºÆ® µå·Î¿ì³ª ´ÙÀÌ·ºÆ® »ç¿îµå ·¹º§ÀÇ ÇÁ
·Î±×·¡¹Ö¿¡¼ 5.0°ú 6.0Àº ±â´É »ó¿¡ ÀÖ¾î Å« Â÷À̰¡ ¾ø´Ù. ¸ÕÀú ´ÙÀÌ·ºÆ®X
°¡ ¹«¾ùÀÎÁöºÎÅÍ »ìÆìº¸µµ·Ï ÇϰڴÙ. ÇѸ¶µð·Î ´ÙÀÌ·ºÆ®X¸¦ ¼Ò°³ÇÏ¸é ¡®´Ù
ÀÌ·ºÆ®X´Â ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®°¡ ¹ßÇ¥ÇÑ ¸ÖƼ¹Ìµð¾î¿ë ¶óÀ̺귯¸®¡¯¶ó°í Çϸé
µÉ °ÍÀÌ´Ù. ´ÙÀÌ·ºÆ®XÀÇ ¿ø·¡ µîÀå ¸ñÀûÀº MS µµ½º ±â¹ÝÀ¸·Î Çü¼ºµÇ¾îÀÖ´ø
°ÔÀÓ½ÃÀåÀ» À©µµ ±â¹ÝÀ¸·Î µ¹¸± ¼ö ÀÖ´Â ¹ÙÅÁÀ» ¸¶·ÃÇØÁÖÀÚ´Â °ÍÀ̾ú´Ù. ¸ð
µç ÇÁ·Î±×·¥ÀÌ MS µµ½º¿¡¼ À©µµ·Î ³Ñ¾î°£ ½ÃÁ¡¿¡¼µµ °ÔÀÓ¸¸Àº MS µµ½º
±â¹ÝÀ¸·Î Á¦ÀÛµÉ ¼ö¹Û¿¡ ¾ø´ø ÀûÀÌ ÀÖ¾ú´Ù. ÀÌ´Â À©µµ¿¡¼´Â ºü¸¥ ±×·¡ÇÈ
Ãâ·ÂÀÌ ºÒ°¡´ÉÇ߱⠶§¹®À̾ú´Ù. ¹°·Ð MS µµ½º»óÀÇ °ÔÀÓ Á¦ÀÛ¿¡µµ Ä¿´Ù¶õ
³Á¡Àº ÀÖ¾ú´Ù. °ÔÀÓ Á¦ÀÛ¿¡ »ç¿ëÇÒ ¼ö Àִ ǥÁØ ÀÎÅÍÆäÀ̽º°¡ ¾ø¾ú±â ¶§
¹®¿¡ ±×·¡ÇÈ º¸µå³ª »ç¿îµå Ä«µå, ÀÔ·Â ÀåÄ¡¸¶´Ù º°µµÀÇ µå¶óÀ̹ö¸¦ Á÷Á¢
¸¸µé¾î¾ß Çß´Ù. ±×·¸±â ¶§¹®¿¡ »õ·Î¿î Çϵå¿þ¾î°¡ ¹ßÇ¥µÇ¸é ÇØ¾ßÇÒ ÀÏÀÌ
¸¹¾Ò´Ù.
¹Ý¸é¿¡ À©µµ´Â GDI(Graphic Device Interface)¿Í MCI(Mul timedia
Control Interface)¶ó´Â Ç¥ÁØ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇØ ȸé°ú »ç¿îµå µîÀ» Á¦¾î
ÇÒ ¼ö ÀÖµµ·Ï ÇØÁֱ⠶§¹®¿¡ ½ÇÁ¦ »ç¿ëµÇ´Â Çϵå¿þ¾î°¡ ¹«¾ùÀÎÁö °³¹ßÀÚ°¡
½Å°æ¾²Áö ¾Ê¾Æµµ µÇµµ·Ï ÇØÁÖ¾úÁö¸¸ °ÔÀÓÀÇ ¼Ó¼º»ó °¡Àå Áß¿äÇÑ ¼Óµµ°¡ ´À
·ÁÁö´Â ´ÜÁ¡ÀÌ Á¸ÀçÇÏ¿´´Ù. ÇÑ ¹ø »ó»óÇØº¸±â ¹Ù¶õ´Ù. ¾Æ¹«¸® È·ÁÇÑ »ç¿î
µå¿¡ ³×Æ®¿öÅ© ±â´É±îÁö Áö¿øµÈ´ÙÇѵé È¸é ¼Óµµ°¡ ±Àº¬ÀÌ ±â¾î°¡µí ÇÑ´Ù
¸é ´©±¸µµ ¼±¶æ »ç¿ëÇÏ·Á ÇÏÁö ¾ÊÀ» °ÍÀÌ´Ù.
À©µµ ȯ°æÀÇ ÀÌ·± ´ÜÁ¡À» ±Øº¹ÇÒ ¼ö ÀÖ´Â API¸¦ °ÔÀÓ °³¹ßÀڵ鿡°Ô Á¦°øÇÏ
ÀÚ´Â ¸ñÀûÀ¸·Î ¸¸µé¾îÁø °ÍÀÌ ¹Ù·Î ´ÙÀÌ·ºÆ®XÀÌ´Ù. ´ÙÀÌ·ºÆ®X´Â ¼Óµµ Çâ»ó
°ú ±â¹Ý Çϵå¿þ¾î¿¡ »ó°ü¾ø´Â ´ÜÀÏ ÀÎÅÍÆäÀ̽º¸¦ ÅëÇÑ ÇÁ·Î±×·¡¹ÖÀ» Á¦°øÇØ
ÁÖ´Â, µÎ ¸¶¸®ÀÇ Åä³¢¸¦ ÀâÀÚ´Â ¸ñÀûÀ» °®°í ÀÖ´Ù.
»ç½Ç ´ÙÀÌ·ºÆ®X ÀÌÀü¿¡µµ WinG¶ó ÇÏ¿© ºñ½ÁÇÑ ¸ñÀûÀÇ API°¡ ¹ßÇ¥µÈ ÀûÀÌ ÀÖ
¾úÀ¸³ª Å©°Ô ¼º°øÀ» °ÅµÎÁö´Â ¸øÇÏ¿´°í ±× µÚ¿¡ °ÔÀÓ SDK¶ó´Â À̸§À¸·Î ´Ù
ÀÌ·ºÆ®X°¡ ¹ßÇ¥µÇ¾ú´Ù°¡ ÃÖÁ¾ÀûÀ¸·Î ´ÙÀÌ·ºÆ®X¶ó´Â À̸§À¸·Î º¯°æµÇ¾ú´Ù.
´ÙÀÌ·ºÆ®¶ó´Â ¸»ÀÌ ÀǹÌÇÏ´Â °ÍÀº Çϵå¿þ¾î¸¦ ¿ìȸÇÏ¿© Á¢±ÙÇÏ´Â °ÍÀÌ ¾Æ
´Ï¶ó Á÷Á¢ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ÇØÁÜÀ¸·Î½á ºü¸¥ ¼Óµµ¸¦ Á¦°øÇØÁشٴ °ÍÀÌ
´Ù. óÀ½¿¡ ´ÙÀÌ·ºÆ®X´Â °ÔÀÓ °³¹ß¸¸À» À§ÇÑ API·Î °³¹ßµÇ¾úÁö¸¸ Áö±ÝÀº ¸Ö
Ƽ¹Ìµð¾î °ü·Ã ¸ðµç ÀÀ¿ë¿¡ »ç¿ëÇÒ ¼ö Àִ ǥÁØ API·Î ¹ßÀüÇÑ »óÅÂÀÌ´Ù.
µ¶ÀÚ ¿©·¯ºÐµµ ´ÙÀÌ·ºÆ®X¸¦ °ÔÀÓ °³¹ß¸¸¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù°í ÇÑÁ¤ÁþÁö ¸»
±â ¹Ù¶õ´Ù. ´ÙÀÌ·ºÆ®X°¡ ÁöÇâÇÏ´Â ¸ñÇ¥´Â ´ÙÀ½°ú °°´Ù.
¿À¶ô, ¸ÖƼ¹Ìµð¾î, ÀÎÅͳÝÀ» Çϳª·Î
´ÙÀÌ·ºÆ®X¸¦ ÅëÇØ °ÔÀÓ°ú ¸ÖƼ¹Ìµð¾î ¼ºñ½º °³¹ßÀÚ´Â ¼Óµµ»óÀÇ ÀåÁ¡À» À¯
ÁöÇÏ¸é¼ µð¹ÙÀ̽º µ¶¸³¼ºÀ̶ó´Â ÀåÁ¡À» À¯ÁöÇÏ°Ô µÇ¾ú´Ù. ´ÙÀÌ·ºÆ®X°¡ ÁÖ
´Â ¸ÖƼ¹Ìµð¾î ±â´ÉÀº À¥ »ó¿¡µµ Àû¿ë °¡´ÉÇÑ ºÎºÐÀÌ ¹«±Ã¹«ÁøÇϱ⠶§¹®
¿¡ ¾ÖÃÊÀÇ °ÔÀÓ Á¦ÀÛ¿ë ¶óÀ̺귯¸®¶ó´Â À̹ÌÁö¿¡¼ ¹ü¿ë ¸ÖƼ¹Ìµð¾î ¼ºñ
½º ¶óÀ̺귯¸®¶ó´Â º¸´Ù ±¤¹üÀ§ÇÑ ¹üÁÖ¿¡¼ »ç¿ëµÉ °ÍÀÌ´Ù.
Çϵå¿þ¾î ¹ßÀüÀÇ °¡¼ÓÈ
´ÙÀÌ·ºÆ®X´Â º¸µå¿¡ ÀÌ¿ë °¡´ÉÇÑ ±â´ÉÀÌ ÀÖÀ» °æ¿ì À̸¦ ¼ÒÇÁÆ®¿þ¾îÀûÀ¸·Î
ó¸®Çϱ⠺¸´Ù´Â Çϵå¿þ¾îÀûÀ¸·Î ó¸®ÇÑ´Ù. ¶ÇÇÑ ±×·¡ÇÈ/»ç¿îµå º¸µå³ª
±×·¡ÇÈ °¡¼Ó±â¸¦ ¸¸µå´Â Çϵå¿þ¾î ¾÷ü(IHV : Independent Hardware
Vendors)ÀÇ ÀǰßÀ» Àû±Ø ¼ö·ÅÇÏ¿© ´ÙÀÌ·ºÆ®X Çϵå¿þ¾î °³¹ß °¡À̵å¶óÀÎÀ»
¸¸µé±â ¶§¹®¿¡ Çϵå¿þ¾î ±â¼ú°ú µ¿¹Ý ¹ßÀüÇÏ´Â »ó½Â È¿°ú¸¦ ³º°í ÀÖ´Ù. ´Ù
ÀÌ·ºÆ®X´Â Çϵå¿þ¾î ±â´ÉÀÌ ÀÖÀ» °æ¿ì À̸¦ ÀÌ¿ëÇÏ°í ¾øÀ» °æ¿ì¿¡¸¸ ¼ÒÇÁ
Æ®¿þ¾îÀûÀ¸·Î ¾Ö¹Ä·¹À̼ÇÇÑ´Ù.
°³¹ßÀÚ, Çϵå¿þ¾î ¾÷ü, »ç¿ëÀÚ ¸ðµÎÀÇ ±â´ë ÃæÁ·
°á°úÀûÀ¸·Î ´ÙÀÌ·ºÆ®X´Â ÀÌ¿Í °ü·ÃµÈ ¸ðµç °³¹ßÀڵ鿡°Ô´Â °³¹ßÀÇ ¿ëÀÌÇÔ
À» Á¦°øÇØÁÖ°í Çϵå¿þ¾î ¾÷ü¿¡°Ô´Â ±â¼ú ¹ßÀü°ú ´õºÒ¾î ´õ ¸¹Àº ¸ÅÃâÀ»
°¡´ÉÄÉ ÇØÁÖ¾úÀ¸¸ç »ç¿ëÀÚµéÀº ¸¸Á·ÇÒ ¸¸ÇÑ ¼öÁØÀÇ ÇÁ·Î±×·¥À» »ç¿ëÇÒ ¼ö
ÀÖ´Â °á°ú¸¦ °¡Á®¿À°Ô µÇ¾ú´Ù.
´ÙÀÌ·ºÆ®XÀÇ ±¸¼º
ÇöÀç ´ÙÀÌ·ºÆ®X´Â óÀ½ ¹ßÇ¥ÇÒ ¶§¿¡ ºñÇØ ±²ÀåÈ÷ ±× ±¸¼ºÀÌ ºñ´ëÇØÁ³´Ù.
Å©°Ô »óÀ§ ·¹º§ÀÇ ¼ºñ½º¸¦ Á¦°øÇØÁÖ´Â ´ÙÀÌ·ºÆ®X ¹Ìµð¾î(DirectX Media)
¿Í ÇÏÀ§ ·¹º§ÀÇ ±â¹ÝÀ» Á¦°øÇØÁÖ´Â ´ÙÀÌ·ºÆ®X ÆÄ¿îµ¥À̼Ç(DirectX
Foundation)À¸·Î ±¸¼ºµÈ´Ù.
¸ÕÀú ±â¹ÝÀÌ µÇ´Â ´ÙÀÌ·ºÆ®X ÆÄ¿îµ¥À̼ÇÀ» »ìÆìº¸ÀÚ. À̸¦ ±¸¼ºÇÏ´Â ¿ä¼Ò
µé·Î´Â ´ÙÀÌ·ºÆ® µå·Î¿ì, ´ÙÀÌ·ºÆ® ÀÎDz, ´ÙÀÌ·ºÆ® »ç¿îµå, ´ÙÀÌ·ºÆ® 3D
(Immediate mode), ´ÙÀÌ·ºÆ® ¼Â¾÷ µîÀ» µé ¼ö ÀÖ´Ù. ÇÊÀÚ°¡ À̹ø ƯÁý¿¡
¼ ´Ù·ç°íÀÚ ÇÏ´Â ºÎºÐÀº ¹Ù·Î ´ÙÀÌ·ºÆ®X ÆÄ¿îµ¥À̼ÇÀÇ ±ØÈ÷ ÀϺο¡ ÇØ´çÇÑ
´Ù. ±×¸¸Å ´ÙÀÌ·ºÆ®X´Â ¹æ´ëÇØÁ³´Ù. ´ÙÀÌ·ºÆ®X ÆÄ¿îµ¥À̼ÇÀ» ±¸¼ºÇÏ´Â ¿ä
¼ÒµéÀÇ ¿ªÇÒ¿¡ ´ëÇØ °£´ÜÈ÷ ¿ä¾àÇϸé Ç¥ 1°ú °°´Ù.
´ÙÀÌ·ºÆ®X ÆÄ¿îµ¥À̼ÇÀ» ±â¹ÝÀ¸·Î ÇÏ´Â ´ÙÀÌ·ºÆ®X ¹Ìµð¾î¿¡´Â ´ÙÀÌ·ºÆ® ¼î
¿ì, ´ÙÀÌ·ºÆ® ¾Ö´Ï¸ÞÀ̼Ç, ´ÙÀÌ·ºÆ® 3D(Retained Mode), ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ
µîÀÌ Æ÷ÇԵȴÙ. VRML¿¡ ´ëÇÑ Áö¿ø ¿ª½Ã ´ÙÀÌ·ºÆ®X ¹Ìµð¾î¿¡ Æ÷ÇԵȴÙ. ´Ù
ÀÌ·ºÆ®X ¹Ìµð¾î¸¦ ±¸¼ºÇÏ´Â ¿ä¼ÒµéÀÇ ¿ªÇÒ¿¡ ´ëÇØ °£´ÜÈ÷ ¿ä¾àÇϸé Ç¥ 2¿Í
°°´Ù.
±×¸² 1 : ´ÙÀÌ·ºÆ®XÀÇ ±¸¼º
===============================================================
´ÙÀÌ·ºÆ® µå·Î¿ì(DirectDraw) ºü¸¥ ¼ÓµµÀÇ ±×·¡ÇÈ Ãâ·ÂÀ» ´ã´çÇÏ´Â °´Ã¼
--------------------------------------------------------------
´ÙÀÌ·ºÆ® »ç¿îµå(DirectSound) 3D±îÁöÀÇ »ç¿îµå Ãâ·Â°ú »ç¿îµå ³ìÀ½À»
´ã´çÇÏ´Â °´Ã¼
---------------------------------------------------------------
´ÙÀÌ·ºÆ® ÀÎDz(Direct Input) ¸¶¿ì½º, Űº¸µå, Á¶À̽ºÆ½µîÀÇ
ÀåÄ¡·ÎºÎÅÍÀÇ ÀÔ·ÂÀ» ´ã´çÇÏ´Â °´Ã¼
---------------------------------------------------------------
´ÙÀÌ·ºÆ® 3D(Immediate Mode) ÃÖÀûÈµÈ 3Â÷¿ø ±×·¡ÇÈ Ãâ·Â ¿£Áø
---------------------------------------------------------------
´ÙÀÌ·ºÆ® ¼Â¾÷(Direct Setup) ´ÙÀÌ·ºÆ®X °ü·Ã ÇÁ·Î±×·¥ÀÇ ¼³Ä¡
ÇÁ·Î±×·¥ÀÇ »ý¼ºÀ» ´ã´çÇÏ´Â °´Ã¼
===============================================================
Ç¥ 1 : ´ÙÀÌ·ºÆ®X ÆÄ¿îµ¥À̼ÇÀ» ±¸¼ºÇÏ´Â ¿ä¼ÒµéÀÇ ¿ªÇÒ
±×¸² 2 : ´ÙÀÌ·ºÆ®X ÆÄ¿îµ¥À̼ÇÀÇ ±¸Á¶
´ÙÀÌ·ºÆ®X´Â À©µµ 98À̳ª À©µµ NT 5.0¿¡¼´Â ¿î¿µÃ¼°èÀÇ ÀϺηΠ¼³Ä¡µÈ´Ù.
ÇÏÁö¸¸ À©µµ 95¿Í NT 4.0¿¡¼´Â º°µµ·Î ¼³Ä¡ÇØÁÖ¾î¾ß ÇÑ´Ù. ¸¸ÀÏ µ¶ÀÚ ¿©·¯
ºÐÀÇ PC¿¡ À©µµ¿ë °ÔÀÓÀ» ¼³Ä¡ÇÑ ÀûÀÌ ÀÖ´Ù¸é ´ÙÀÌ·ºÆ®X°¡ ¼³Ä¡µÇ¾î ÀÖÀ»
°ÍÀÌ´Ù(°ÔÀÓÀ» ¼³Ä¡ÇÒ ¶§ °°ÀÌ ¼³Ä¡µÇ¾úÀ» °ÍÀÌ´Ù). ´ÙÀÌ·ºÆ®X°¡ ¼³Ä¡µÇ
Áö ¾Ê¾Ò°Å³ª ÀÌÀü ¹öÀüÀÇ ´ÙÀÌ·ºÆ®X°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é À¥»çÀÌÆ®
(http://www.microsoft.com/directx)³ª ±¹³» Åë½Å¸ÁÀ» ÅëÇØ ´Ù¿î·Îµå¹ÞÀ»
¼ö ÀÖÀ» °ÍÀÌ´Ù. »ç½Ç ´ÙÀÌ·ºÆ®XÀÇ ¼³Ä¡´Â ²Ï ±î´Ù·Î¿î ÆíÀε¥ ´ÙÀÌ·ºÆ® ¼Â
¾÷À» ÀÌ¿ëÇÏ¸é ½±°Ô ¼³Ä¡ ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Ù.
===============================================================
´ÙÀÌ·ºÆ®¼î¿ì ÆÄÀÏÀ̳ª ÀÎÅͳݻóÀÇ ¼¹ö·ÎºÎÅÍÀÇ µ¿¿µ»óµîÀÇ
(DirectShow) Ç÷¹À̳ª ³ìȸ¦ ´ã´çÇÏ´Â °´Ã¼
---------------------------------------------------------------
´ÙÀÌ·ºÆ® ¾Ö´Ï¸ÞÀÌ¼Ç DHTML°ú ÅëÇյǾî À¥ ÆäÀÌÁö»ó¿¡¼ ¾Ö´Ï¸ÞÀ̼Ç
À» (DirectAnimation) Á¦°øÇØÁÖ´Â °´Ã¼
---------------------------------------------------------------
´ÙÀÌ·ºÆ®3D 3Â÷¿ø ȯ°æ¿¡¼ÀÇ ¾Ö´Ï¸ÞÀ̼ÇÀ» ½±°Ô ÇØÁÖ´Â °´Ã¼(Retained
Mode ´ÙÀÌ·ºÆ® Ç÷¹ÀÌ ³×Æ®¿öÅ©³ª ¸ðµ©À» ÅëÇÑ ¸ÖƼ »ç¿ëÀÚ °ÔÀÓÀ» ½±°Ô
(DirectPlay) ÇØÁÖ´Â °´Ã¼
===============================================================
Ç¥ 2 : ´ÙÀÌ·ºÆ®X ¹Ìµð¾î¸¦ ±¸¼ºÇÏ´Â ¿ä¼ÒµéÀÇ ¿ªÇÒ
±×¸² 3 : ´ÙÀÌ·ºÆ®X ¹Ìµð¾îÀÇ ±¸Á¶
´ÙÀÌ·ºÆ®X¿Í COM
Àß ¾Ë°í ÀÖµíÀÌ ´ÙÀÌ·ºÆ® X ±¸¼º ¿ä¼ÒµéÀº ¸ðµÎ COM ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ
°í ÀÖ´Ù. ÀÌ COMÀº ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼ Á¦½ÃÇÑ ¹ÙÀ̳ʸ® Ç¥ÁØ ÀÎÅÍÆäÀ̽º
½ºÆåÀ¸·Î¼ ¶Ù¾î³ È®À强À» Á¦°øÇÏ´Â ±â¹ÝÀÌ µÇ°í ÀÖ´Ù. °á±¹ ´ÙÀÌ·ºÆ® X
¸¦ »ç¿ëÇÏ·Á¸é COM¿¡ ´ëÇÑ Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù. ±×·¸´Ù°í ¾ÆÁÖ ¾î·Á¿î °Í
Àº ¾Æ´Ï´Ï±î °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. COM ÇÁ·Î±×·¡¹Ö¿¡ µÎ °¡Áö Á¾·ù°¡ ÀÖ
´Ù. Çϳª´Â COM °´Ã¼¸¦ ¸¸µå´Â ÇÁ·Î±×·¡¹ÖÀÌ°í ³ª¸ÓÁö Çϳª´Â ³²ÀÌ ¸¸µé
¾î ³õÀº COM °´Ã¼¸¦ »ç¿ëÇÏ´Â ÇÁ·Î±×·¡¹ÖÀÌ´Ù. ÀüÀÚ¸¦ COM ¼¹ö ÇÁ·Î±×·¡
¹ÖÀ̶ó°í Çϰí ÈÄÀÚ¸¦ COM Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¡¹ÖÀ̶ó°í ÇÑ´Ù. ÀüÀÚ´Â »ó
´çÈ÷ ±î´Ù·Ó°í ¾î·Æ°í Èûµé°í µûºÐÇÏÁö¸¸ ÈÄÀÚ´Â ±×¸® º¹ÀâÇϰųª ¾î·ÆÁö
¾Ê´Ù. ´ÙÀÌ·ºÆ®XÀÇ ±¸¼º ¿ä¼ÒµéÀº COM °´Ã¼·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ±× À̾߱â
´Â ÀÌ¹Ì ¸¸µé¾îÁ® ÀÖ´Â COM °´Ã¼À̱⠶§¹®¿¡ ¿ì¸®°¡ ÇÁ·Î±×·¥À» Á¦ÀÛÇÒ ¶§
ÇÊ¿äÇÏ´Ù¸é °®´Ù ¾²±â¸¸ ÇÏ¸é µÈ´Ù´Â °ÍÀÌ´Ù. Áï, ´ÙÀÌ·ºÆ®X ÇÁ·Î±×·¡¹Ö
Àº COM Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¡¹ÖÀÌ µÇ±â ¶§¹®¿¡ COM¿¡ ´ëÇÑ ¸¹Àº Áö½ÄÀ» ÇÊ
¿ä·Î ÇÏÁö ¾Ê´Â´Ù.
¿ø·¡ COM ÇÁ·Î±×·¡¹Ö¿¡¼ ¾î¶² COM °´Ã¼°¡ Á¦°øÇØÁÖ´Â ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ë
ÇÏ·Á¸é ±× °´Ã¼ÀÇ CLSID³ª ProgID¸¦ ¾Ë¾Æ¾ßÇÑ´Ù. ±× ´ÙÀ½À¸·Î ±×°ÍÀÇ Å¬·¡
½ºÆÑÅ丮(IClassFactory) ÀÎÅÍÆäÀ̽º¸¦ ¾ò¾î¼ °´Ã¼¸¦ Çϳª »ý¼ºÇϸé¼
ÁöÁ¤ÇÑ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ Æ÷ÀÎÅ͸¦ ¾òÀ» ¼ö ÀÖ´Ù. ¸ðµç COM ÀÎÅÍ
ÆäÀ̽º´Â IUnknownÀ¸·Î °è½ÂµÇ¹Ç·Î QueryInteface, AddRef, Release µîÀÇ
¸Þ¼Òµå È£ÃâÀ» ÅëÇØ ´Ù¸¥ °ü·Ã ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ Æ÷ÀÎÅ͵µ ¾òÀ» ¼ö ÀÖ°í
°´Ã¼ÀÇ ¸Þ¸ð¸®¿¡¼ÀÇ Á¦°Åµµ ÇØÁÙ ¼ö ÀÖ´Ù. COM ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ Áö½ÄÀÌ
¾ø´Â »ç¶÷ÀÌ À§ÀÇ ¸»À» Àо¸é ¹«½¼ ¼Ò¸®ÀÎÁö ÀÌÇØ°¡ ¾È °¥ °ÍÀÌ´Ù. ´ÙÀÌ
·ºÆ®X °´Ã¼µéÀÌ Á¦°øÇØÁÖ´Â ±â´ÉµéÀ» ÀÌ¿ëÇÒ ¶§µµ ¿ø·¡´Â À§¿Í °°Àº ÀýÂ÷
¸¦ °ÅÃÄ¾ß ÇÑ´Ù. ÇÏÁö¸¸ °³¹ßÀÚÀÇ ÆíÀǸ¦ À§ÇØ ÀÌ·± °ÍÀ» Àß ¸ô¶óµµ ¿øÇÏ
´Â ÀÎÅÍÆäÀ̽º¸¦ »ý¼ºÇØÁÖ´Â µµ¿ì¹Ì ÇÔ¼öµé(Helper Function)ÀÌ Á¦°øµÇ±â
¶§¹®¿¡ Å« °ÆÁ¤À» ÇÒ ÇÊ¿ä´Â ¾ø´Ù.
´ÙÀÌ·ºÆ®X´Â COMÀ» ±â¹ÝÀ¸·Î Çϱ⠶§¹®¿¡ È®À强ÀÌ ¶Ù¾î³ª´Ù. ¾Æ¹«¸® È®Àå
¼ºÀÌ ¶Ù¾î³ªµµ ÀÌÀü ¹öÀü°úÀÇ È£È¯¼ºÀÌ À¯ÁöµÇÁö ¾Ê´Â´Ù¸é º° Àǹ̰¡ ¾ø
À» °ÍÀÌ´Ù. ¿¹¸¦ µé¾î ´ÙÀÌ·ºÆ® µå·Î¿ì ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Ùº¸¸é
IDirectDrawSurface2¸¦ º¼ ¼ö ÀÖ´Ù. ÃÊâ±â¿¡ ´ÙÀÌ·ºÆ® µå·Î¿ì ÇÁ
·Î±×·¡¹ÖÀ» ÇÑ »ç¶÷µéÀº IDirectDrawSurface¸¸ º¸¾ÒÀ» °ÍÀÌ´Ù. 2°¡ ºÙ
¾úÀ¸´Ï±î ¹«¾ùÀΰ¡ °³¼±µÈ ¹öÀüÀ̶õ ´À³¦Àº µé °ÍÀÌ´Ù. ´ÙÀÌ·ºÆ®X¿¡¼´Â ¾î
¶² ÀÎÅÍÆäÀ̽ºÀÇ ±â´É¿¡ Ãß°¡°¡ ÇÊ¿äÇÏ¸é ±âÁ¸ÀÇ ÀÎÅÍÆäÀ̽º´Â ±×´ë·Î ³ö
µÐ ä »õ·Î¿î ÀÎÅÍÆäÀ̽º¸¦ ¸¸µé¾î³½´Ù.
±×·¡¼ ÀÌÀü¿¡ ¸¸µé¾îÁø ÇÁ·Î±×·¥µéÀº ¿¾³¯ÀÇ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ µ¿ÀÛ
ÇÏ°í »õ·Î ¸¸µé¾îÁö´Â ÇÁ·Î±×·¥µéÀº »õ·Î Ãß°¡µÈ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇØ ¸¸µé
¾î Áú ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¯ÇÑ ´ÙÀÌ·ºÆ®X¸¸ÀÌ °®´Â Ư¡ÀÌ ¾Æ´Ï°í
¹Ù·Î COMÀÇ Æ¯Â¡ÀÌ´Ù.
- the end of this article -