DirectX 9.0 ÀÇ ¼Ò°³ DirectX SDK ÀÇ »ç¿ë¹ý C ¶Ç´Â C++ ¿¡ ÀÇÇÑ DirectX ÇÁ·Î±×·¡¹Ö COM ÀÇ »ç¿ë¹ý COM °³Ã¼ÀÇ »ý¼º   [¸ñÂ÷¿­¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
COM °³Ã¼ÀÇ »ý¼º
 
Microsoft DirectX 9.0

COM °³Ã¼ÀÇ »ý¼º


±¸¼º ¿ä¼Ò °³Ã¼ ¸ðµ¨ (COM) °³Ã¼¸¦ »ý¼º ÇÏ´Â ¹æ¹ýÀº ¸î°³Àΰ¡ ÀÖ´Ù. Microsoft® DirectX® ÇÁ·Î±×·¡¹Ö¿¡¼­´Â, ´ÙÀ½ÀÇ 2 °³ÀÇ ¹æ¹ýÀÌ °¡Àå ÀϹÝÀûÀ¸·Î »ç¿ëµÇ°í ÀÖ´Ù.

°³Ã¼¸¦ »ý¼º ÇÒ ¶§´Â,CoInitialize ÇÔ¼ö¸¦ È£ÃâÇØ ¹Ì¸® COM ¸¦ ÃʱâÈ­ÇØ µÑ Çʿ䰡 ÀÖ´Ù. °£Á¢ÀûÀ¸·Î °³Ã¼¸¦ »ý¼º ÇÏ´Â °æ¿ì´Â, °³Ã¼ »ý¼º ¸Þ¼­µå¿¡ ÀÇÇØ ÀÌ Ã³¸®¸¦ ÇÑ´Ù. CoCreateInstance ¸¦ »ç¿ëÇØ °³Ã¼¸¦ »ý¼º ÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì´Â, ¸í½ÃÀûÀ¸·Î CoInitialize ¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. Á¶ÀÛÀ» ¿Ï·áÇϸéCoUninitialize ¸¦ È£ÃâÇØ COM ¸¦ ÃʱâÈ­ÇÒ Çʿ䰡 ÀÖ´Ù. CoInitialize ¸¦ È£ÃâÇÏ¸é ´ëÀÀÇÏ´Â CoUninitialize ¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. COM ¸¦ ¸í½ÃÀûÀ¸·Î ÃʱâÈ­ÇÒ Çʿ䰡 ÀÖ´Â ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â, ½ºÅ¸Æ® ¾÷ ·çƾÀ¸·Î COM ¸¦ ÃʱâÈ­ÇØ, Ŭ¸°¾÷ ·çƾÀ¸·Î ÃʱâÈ­µÇÁö ¾ÊÀº »óÅ¿¡ µÇµ¹¸®´Â °ÍÀÌ ÀϹÝÀûÀÌ´Ù.

CoCreateInstance ·Î COM °³Ã¼ÀÇ »õ·Î¿î ÀνºÅϽº¸¦ »ý¼º ÇÏ·Á¸é , °³Ã¼ÀÇ CLSID °¡ ÇÊ¿äÇÏ´Ù. °ø°³µÇ°í ÀÖ´Â CLSID ´Â, ·¹ÆÛ·±½º ¹®¼­ ¶Ç´Â ÇØ´çÇÏ´Â Çì´õ ÆÄÀÏ¿¡ ±â¼úµÇ°í ÀÖ´Ù. CLSID °¡ °ø°³µÇÁö ¾ÊÀº °æ¿ì´Â, ±× °³Ã¼¸¦ Á÷Á¢ »ý¼º ÇÒ ¼ö ¾ø´Ù.

CoCreateInstance ÇÔ¼ö¿¡´Â 5 °³ÀÇ ÆÄ¶ó¹ÌÅͰ¡ ÀÖ´Ù. DirectX ·Î »ç¿ëÇÏ´Â COM °³Ã¼¸¦ »ý¼º ÇÏ´Â °æ¿ì´Â, º¸Åë, ´ÙÀ½ÀÇ ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÑ´Ù.

¿¹¸¦ µé¾î, ´ÙÀ½ ÄÚµå´Â, Microsoft DirectPlay® ÇÇ¾î °³Ã¼ÀÇ »õ·Î¿î ÀνºÅϽº¸¦ »ý¼º ÇØ, °³Ã¼ÀÇ IDirectPlay8Peer ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅ͸¦ º¯¼ö g_pDP ¿¡ µ¹·ÁÁÖ°í ÀÖ´Ù. ¿¡·¯°¡ ¹ß»ý Çϸé, ¸Þ½ÃÁö ¹Ú½º°¡ Ç¥½ÃµÇ¾î ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¾·áÇÑ´Ù.

IDirectPlay8Peer*  g_pDP = NULL;
...
CoInitialize( NULL );
...
hr = CoCreateInstance( CLSID_DirectPlay8, NULL, CLSCTX_INPROC_SERVER,
                         IID_IDirectPlay8Peer, (LPVOID*) &g_pDP );

if( FAILED( hr ) ) 
  {
    MessageBox( NULL, TEXT("Failed Creating IDirectPlay8Peer.  "),
                  TEXT("DirectPlay Sample"), MB_OK | MB_ICONERROR );
    return FALSE;
  }
...

º¸ÅëÀº, °³Ã¼¸¦ °£Á¢ÀûÀ¸·Î »ý¼º ÇÏ´Â ÂÊÀÌ Çö°ÝÈ÷ °£´ÜÇÏ´Ù. °³Ã¼ »ý¼º ¸Þ¼­µå¿¡ ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍÀÇ ÁÖ¼Ò¸¦ °Ç³×ÁÖ´Â °Í¸¸À¸·Î ÁÁ´Ù. ÈÄ´Â, ¸Þ¼­µå¿¡ ÀÇÇØ °³Ã¼°¡ »ý¼º µÇ¾î, ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅͰ¡ µ¹¾Æ°£´Ù. º¸Åë, °£Á¢ÀûÀÎ ¹æ¹ýÀ¸·Î °³Ã¼¸¦ »ý¼º ÇÏ´Â °æ¿ì´Â, ¸Þ¼­µå°¡ µ¹·ÁÁÖ´Â ÀÎÅÍÆäÀ̽º¸¦ ¼±ÅÃÇÒ ¼ö ¾ø´Ù. ´Ù¸¸, °³Ã¼ÀÇ »ý¼º ¹æ¹ý¿¡ ´ëÇØ, ´Ù¾çÇÑ »çÇ×À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ÄÚµå´Â, À§¿¡ÀÇ IDirect3D9::CreateDevice ¸Þ¼­µå¸¦ È£ÃâÇØ, µð½ºÇ÷¹ÀÌ ¾î´ðÅ͸¦ ³ªÅ¸³»´Â ÀåÄ¡ °³Ã¼¸¦ »ý¼º Çϰí ÀÖ´Ù. ÀÌ ¸Þ¼­µå´Â, °³Ã¼ÀÇ IDirect3DDevice9 ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅ͸¦ µ¹·ÁÁØ´Ù. ÃÖÃÊÀÇ 4 °³ÀÇ ÆÄ¶ó¹ÌÅÍ´Â, °³Ã¼¸¦ »ý¼º Çϱâ À§Çؼ­ ÇÊ¿äÇÑ °¢Á¾ÀÇ Á¤º¸¸¦ ÁöÁ¤ÇØ, 5 ¹øÂ°ÀÇ ÆÄ¶ó¹ÌÅÍ´Â ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅ͸¦ ¹Þ´Â´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â, ·¹ÆÛ·±½º ¹®¼­¸¦ ÂüÁ¶ÇÒ°Í.

IDirect3DDevice9 *g_pd3dDevice = NULL;
...
if( FAILED( g_pD3D->CreateDevice(D3DADAPTER_DEFAULT,
                                 3DDEVTYPE_HAL,
                                 hWnd,
                                 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                 &d3dpp,
                                 &g_pd3dDevice )))

return E_FAIL;


© 2002 Microsoft Corporation. All rights reserved.
¡èTOP