DirectX Graphics ÇÁ·Î±×·¡¹Ö °¡ÀÌµå °íµµÀÇ ÁÖÁ¦ ¸ÖƼ Çìµå [¸ñÂ÷¿¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
|
| Microsoft DirectX 9.0 |
¸ÖƼ Çìµå Ä«µå´Â, °øÅëÀÇ frame buffer¿Í °¡¼Ó±â¸¦ °¡Á®, µ¶¸³ÇÑ µðÁöÅÐ ¾Æ³¯·Î±× ÄÁ¹öÅÍ (DAC)¿Í ¸ð´ÏÅÍ Ãâ·ÂÀ» °¡Áö´Â Ä«µåÀÌ´Ù. ÀÌ ÀåÄ¡°¡ Á¦°øÇÏ´Â ¸ÖƼ ¸ð´ÏÅÍ Áö¿øÀ» »ç¿ëÇÏ¸é ´Ù¸¥ µð½ºÇ÷¹ÀÌ ¾î´ðÅ͸¦ °°Àº ¼ö »ç¿ëÇßÀ» °æ¿ìº¸´Ù Æí¸®ÇÏ´Ù.
¸ÖƼ Çìµå Ä«µå´Â, º¹¼öÀÇ Ç® ½ºÅ©¸° ½º¿Ò üÀÎÀ» ±¸µ¿ÇÏ´Â ´ÜÀÏÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º (API) ·¹º§ÀÇ ÀåÄ¡·Î¼ API °¡ °ø°³ÇÑ´Ù. À̰Ϳ¡ ÀÇÇØ, ¸ðµç ¸®¼Ò½º°¡ ¸ðµç Çìµå¿¡ ÀÇÇØ °øÀ¯µÇ¾î ¸ðµç Çìµå°¡ ¿ÏÀüÈ÷ °°Àº ´É·ÂÀ» °¡Áö°Ô µÈ´Ù. °¢ Çìµå¸¦ µ¶¸³ÇÑ µð½ºÇ÷¹ÀÌ ¸ðµå·Î ¼³Á¤ÇØ, µû·Î µû·Î ¸®ÇÁ·¹½¬ (IDirect3DSwapChain9::Present ¸¦ »ç¿ë) ÇÒ ¼ö ÀÖ´Ù. µ¿½Ã¿¡ ÇÁ·¹Á¨Å×ÀÌ¼Ç ÇÏ·Á¸é ,IDirect3DDevice9::Present ¸¦ »ç¿ëÇÑ´Ù.
¸ÖƼ Çìµå ÀåÄ¡ÀÇ ½º¿Ò üÀÎÀº ¸ðµÎ Ç® ½ºÅ©¸°ÀÌ ¾Æ´Ï¸é ¾ÈµÈ´Ù. ¸ÖƼ Çìµå ¸ðµå¿¡ ¹Ù²î¾úÀ» ¶§, ÀåÄ¡´Â Ç® ½ºÅ©¸°ÀΠä°¡ ¾Æ´Ï¸é ¾ÈµÈ´Ù. À©µµ¿ì ¸ðµå¿¡ µ¹¾Æ¿Ã ¶§´Â, ÀåÄ¡¸¦ ÆÄ±âÇÒ Çʿ䰡 ÀÖ´Ù (Alt+Tab Ű¿¡ ÀÇÇÑ ÃÖ¼ÒÈ Ã³¸®´Â ¿¹¿Ü).
ºñµð¿À ¸Þ¸ð¸®¸¦ º¹¼öÀÇ Çìµå¿¡ ºÐÇÒÇØ °¢ Çìµå¸¦ ¿ÏÀüÇÏ°Ô µ¶¸³ÇÑ °¡¼Ó±â·Î¼ Ãë±ÞÇÏ´Â Á¾·¡ÀÇ ¹æ¹ýÀº, Áö±Ýµµ ÀϹÝÀûÀ¸·Î »ç¿ëµÇ°í ÀÖ´Ù. ±× ¸ÞÄ«´ÏÁò¿¡ ´ë½ÅÇØ ÀÌ Á¦¾ÈÀÌ À¯È¿°¡ µÇ´Â °ÍÀº, ¾ÖÇø®ÄÉÀ̼ÇÀÌ Microsoft® DirectX® 9.0 ¸ÖƼ Çìµå ¸ðµå·Î ±â´ÉÇϵµ·Ï(µíÀÌ) ƯÈ÷ ÄÚµù µÇ°í ÀÖ´Â °æ¿ì »ÓÀÌ´Ù.
µå¶óÀ̹ö¿¡´Â, 2 °³ÀÇ Ã³¸® ¸ðµå°£ÀÇ º¯È¯¿¡ ÇÊ¿äÇÑ Á¤º¸°¡ Á¦°øµÈ´Ù.
1 °³ÀÇ Çìµå´Â "¸¶½ºÅÍ" Çìµå·Î ºÒ·Á °°Àº Ä«µåÀÇ ±× ¿ÜÀÇ Çìµå´Â "Á¾¼Ó" Çìµå¶ó°í ºÎ¸¥´Ù. ½Ã½ºÅÛ³»¿¡ º¹¼öÀÇ ¸ÖƼ Çìµå ¾î´ðÅͰ¡ Á¸ÀçÇÏ´Â °æ¿ì, 1 °³ÀÇ ¸ÖƼ Çìµå ¾î´ðÅÍÀÇ ¸¶½ºÅÍ Çìµå¿Í ±× Á¾¼Ó Çìµå´Â "±×·ì" À̶ó°í ºÎ¸¥´Ù. °¢ ±×·ìÀº ±× ±×·ìÀÇ ¸¶½ºÅÍ ÇìµåÀÇ ¾î´ðÅÍ ¹øÈ£·Î ³ªÅ¸³´Ù.
D3DCAPS9 ±¸Á¶Ã¼°¡ °»½ÅµÇ¾î, ´ÙÀ½ÀÇ Çϵå¿þ¾îÀÇ »õ·Î¿î ´É·ÂÀÌ °ø°³µÈ´Ù.
UINT NumberOfAdaptersInGroup; UINT MasterAdapterOrdinal; UINT AdapterOrdinalInGroup;
ÀÌ Á¤ÀǸ¦ »ç¿ëÇϸé DirectX 8. x ¿¡¼ÀÇ °°°Ô ¾î´ðÅͰ¡ °¢°¢ µ¶¸³ÇÑ Ä«µåÀÎ°Í °°ÀÌ, ¸ÖƼ Çìµå Ä«µå·Î º¹¼öÀÇ ¾î´ðÅ͸¦ Ç¥ÇöÇÒ ¼ö ÀÖ´Ù.
¸ÖƼ Çìµå ÀåÄ¡¸¦ »ý¼º ÇÏ·Á¸é ,IDirect3D9::CreateDevice ¿¡ µ¿ÀÛ Ç÷¡±× D3DCREATE_ADAPTERGROUP_DEVICE ¸¦ ÁöÁ¤ÇÑ´Ù. ÇÁ·¹Á¨Å×ÀÌ¼Ç ÆÄ¶ó¹ÌÅÍ (D3DPRESENT_PARAMETERS ÀÇ ¹è¿)¿¡´Â,NumberOfAdaptersInGroup ¿ä¼Ò¸¦ Æ÷ÇÔÇÒ Çʿ䰡 ÀÖ´Ù. ·±Å¸ÀÓ¿¡ ÀÇÇØ,AdapterOrdinalInGroup ÀÇ ¹øÈ£¼ø¼¿¡ °¢ Çìµå¿¡ °¢ ¿ä¼Ò¸¦ ÇÒ´çÇÒ ¼ö ÀÖ´Ù. D3DCREATE_ADAPTERGROUP_DEVICE ¸¦ ¼³Á¤ÇßÀ» °æ¿ì´Â, °¢ ÇÁ·¹Á¨Å×ÀÌ¼Ç ÆÄ¶ó¹ÌÅ͸¦ ´ÙÀ½°ú °°ÀÌ ¼³Á¤ÇÒ Çʿ䰡 ÀÖ´Ù.
°Ô´Ù°¡ EnableAutoDepthStencil °¡ TRUE ÀÇ °æ¿ì´Â, ´ÙÀ½ÀÇ °¢ Çʵ带 °¢ D3DPRESENT_PARAMETERS ¿Í °°Àº °ªÀ¸·Î ¼³Á¤ÇÑ´Ù.
D3DCREATE_ADAPTERGROUP_DEVICE °¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì,IDirect3DDevice9::CreateAdditionalSwapChain ÀÇ Ãß°¡ È£ÃâÀº ¹«È¿ÀÌ´Ù.
ÀåÄ¡°¡ D3DCREATE_ADAPTERGROUP_DEVICE ¸¦ »ç¿ëÇØ »ý¼º µÇ°í ÀÖ´Â °æ¿ì,IDirect3DDevice9::Reset ´Â D3DPRESENT_PARAMETERS ÀÇ ¹è¿À» ±â´ëÇÑ´Ù.
IDirect3DDevice9::Reset ¿¡°Ô °Ç³×Áö´Â °¢ D3DPRESENT_PARAMETERS ´Â Ç® ½ºÅ©¸°ÀÌ ¾Æ´Ï¸é ¾ÈµÈ´Ù. À©µµ¿ì ¸ðµå¿¡ µ¹¾Æ¿À·Á¸é , ¸ÖƼ ÇìµåÀÇ ÀåÄ¡¸¦ ÆÄ±âÇØ, ¸ÖƼ Çìµå°¡ ¾Æ´Ñ ÀåÄ¡¸¦ À©µµ¿ì ¸ðµå·Î »ý¼º ´Ù½Ã ÇÒ Çʿ䰡 ÀÖ´Ù.
´ÙÀ½¿¡, ±âº»ÀûÀÎ »ç¿ë¹ýÀÇ ½Ã³ª¸®¿À¸¦ ³ªÅ¸³½´Ù.
1. ¸ÖƼ Çìµå ÀåÄ¡¸¦ »ý¼º ÇÑ´Ù.
2. ÀåÄ¡ÀÇ °¢ ½º¿Ò üÀÎÀ¸·Î ¹Ýº¹ÇØ:
3. i ¹øÂ°ÀÇ ½º¿Ò üÀο¡ ´ëÇØ¼ GetBackBuffer ¸¦ È£ÃâÇÑ´Ù
4. SetRenderTarget ¸¦ È£ÃâÇÑ´Ù.
5. DrawPrimitive ¸¦ È£ÃâÇÑ´Ù.
6. ¿É¼ÇÀ¸·Î¼ swapchain::Present ¸¦ È£ÃâÇÑ´Ù (¶Ç´Â,
¸ðµç ½º¿Ò üÀÎÀÌ µå·ÎÀ×(Drawing) µÇ¾î ·çÇÁ¿Ü¿¡¼ ÇÁ·¹Á¨Å×ÀÌ¼Ç µÉ ¶§±îÁö ±â´Ù¸°´Ù).
7. ¹Ýº¹ÀÇ Á¾·á.
8. ¿É¼ÇÀ¸·Î¼ device::Present ¸¦ »ç¿ëÇØ ¸ðµç ½º¿Ò üÀÎÀ» ÇÁ·¹Á¨Å×ÀÌ¼Ç ÇÑ´Ù.
´õ ÀÚ¼¼ÇÑ Á¤º¸´Â, ¡¸IDirect3D9::CreateDevice ¡¹ ¹× ¡¸IDirect3DDevice9::GetNumberOfSwapChains ¡¹¸¦ ÂüÁ¶ÇÒ°Í.