Á¤Á¡ ¼±¾ð
°³³ä»ó, Á¤Á¡ ¼±¾ðÀº, Á¤Á¡ DMA (Direct Memory Access)³ª ±×·¡ÇȽº ÆÄÀÌÇÁÀÇ Å×¼³·¹ÀÌÅÍ ¿£ÁøÀ» ÇÁ·Î±×·¡¹Ö ÇÏ´Â ¹æ¹ýÀÇ 1 °³ÀÌ´Ù. Á¤Á¡ ¼±¾ðÀº, µ¥ÀÌÅÍ ·¹À̾ƿô°ú Å×¼¿·¹ÀÌÆ®ÀÇ Ã³¸®¸¦ °£°áÇÏ°Ô Ç¥ÇöÇÑ´Ù. Microsoft® DirectX® 8. x ¿¡¼ÀÇ ¼±¾ðÀÇ º¹ÀâÇÔ°ú È®À强¿¡ ´ëÀÀÇϱâ À§ÇØ(¶§¹®¿¡), ÀÌ Á¤Á¡ ½ºÆ®¸²ÀÇ »õ·Î¿î Ç¥Çö Çü½ÄÀ» µµÀÔÇß´Ù.
Á¤Á¡ ¼ÎÀÌ´õ¿Í Á¤Á¡ ¼±¾ðÀº, CreateVertexShader ½Ã¿¡ ¼·Î ¹ÙÀÎµå µÇÁö ¾Ê´Â´Ù. ¼ÎÀÌ´õÀÇ Æò°¡´Â 2 °³ÀÇ ºÎºÐÀ¸·Î ³ª´©¾îÁ³´Ù. 1°³´Â Á¤Á¡ ¼ÎÀÌ´õÀÇ »ý¼º½Ã¿¡ ½ÇÇàµÇ¾î ÀÌÁ¦ 1°³´Â DrawPrimitive ½Ã¿¡ ½ÇÇàµÈ´Ù. Á¤Á¡ ¼ÎÀÌ´õ¿Í Á¤Á¡ ¼±¾ðÀº °³Ã¼¿¡ ÀÇÇØ Ç¥ÇöµÈ´Ù.
¼±¾ðÀº, DWORD ÀÇ ½ºÆ®¸²À¸·Î¼´Â Ç¥ÇöµÇÁö ¾Ê°Ô µÇ¾ú´Ù. D3DVERTEXELEMENT9 ±¸Á¶Ã¼ÀÇ ¹è¿·Î¼ Ç¥ÇöµÈ´Ù. ¹è¿ÀÇ °¢ ¿ä¼Ò·Î, 1 °³ÀÇ Á¤Á¡ ¿ä¼Ò¸¦ ±â¼úÇÑ´Ù.
°Ô´Ù°¡ ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º (API)ÀÇ °¡¿ë¼ºÀÇ ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ, SetVertexDeclaration È£ÃâÇØ¿¡ »ó´çÇÏ´Â °³º°ÀÇ SetFVF È£ÃâÀÌ ÀÖ´Ù. À̰ÍÀº Æí¸®ÇÑ ÇÔ¼öÀÌ´Ù. ÀÌ È£ÃâÀ» ½Ç½ÃÇϸé, ÇöÀç ¼³Á¤µÇ¾î ÀÖ´Â ¼±¾ðÀº ¹«È¿°¡ µÇ¾î, »õ·Î¿î ¼±¾ðÀÌ À¯È¿ÇÏ°Ô µÈ´Ù. DirectX 8.0 ÀÌÀüÀÇ µå¶óÀ̹ö (NumStreams °¡ 0 À¸·Î ¼³Á¤µÈ´Ù)¿¡¼´Â, ¼±¾ðÀ» À¯¿¬ÇÑ Á¤Á¡ Æ÷¸Ë (FVF)À¸·Î º¯È¯ÇÒ ¼ö ¾ø±â À§ÇØ(¶§¹®¿¡), SetVertexDeclaration °¡ ½ÇÆÐÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. SetFVF ´Â, °íÁ¤ ±â´É ¹× ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖ´Â Á¤Á¡ ÆÄÀÌÇÁ¶óÀÎÀ¸·Î¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ³»ºÎÀûÀ¸·Î´Â, FVF ´Â FVF ·ÎºÎÅÍ DirectX 9.0 ¼±¾ð¿¡ÀÇ ¸ÊÇÎÀ» »ç¿ëÇØ, Á¤Á¡ ¼ÎÀÌ´õ ¼±¾ð¿¡ º¯È¯µÈ´Ù. Á¤Á¡ ¼ÎÀÌ´õ ±â´ÉÀÇ DCL Ä¿¸àµå´Â, À̰ÍÀ» ±Ù°Å·Î ÇØ »ý¼º ÇÒ Çʿ䰡 ÀÖ´Ù. ÀÌ º¯È¯À» À§Çؼ(¶§¹®¿¡), ÀÌÇÏ¿¡¼´Â Á¤Á¡ ¼±¾ð¿¡ ´ëÇÑ º¸°í ¼³¸íÇÑ´Ù.
D3DVERTEXELEMENT9 ±¸Á¶Ã¼
ÀÌÇÏ¿¡¼´Â, D3DVERTEXELEMENT9 ±¸Á¶ ü³»ÀÇ Çʵå¿Í ±× ¼³¸íÀ» ³ªÅ¸³½´Ù.
- Stream - ÀÌ Çʵ带 Àо´Â ½ºÆ®¸² ¹øÈ£.
- Offset - ÀÌ Çʵ带 Àо´Â, ¹ÙÀÌÆ® ´ÜÀ§ÀÇ ¿ÀÇÁ¼Â(offset).
- Type - ÀÔ·Â µ¥ÀÌÅÍÀÇ ÇüÅÂ¿Í ±× µ¥ÀÌÅ͸¦ Á¤Á¡ ¼ÎÀÌ´õ ·¹Áö½ºÅÍ (float1, float2, short2n µî)¿¡ ÀúÀå ÇÒ ¶§ÀÇ µ¥ÀÌÅÍ º¯È¯ ¹æ¹ý. Ãâ·ÂÀÇ ÇüÅ´ ¸Þ¼µå¿¡ ÀÇÇØ °áÁ¤ÇÑ´Ù. ¸Þ¼µå¿¡ µû¶ó¼´Â ÇüŰ¡ Á¤ÇØÁ® ÀÖ´Â °æ¿ì°¡ ÀÖ´Ù.
- Method - ÁöÁ¤ÇÑ ÀԷ¿¡ ´ëÇØ¼ Å×¼³·¹ÀÌÅÍ (¶Ç´Â ¼ö¼ÓÇü Áö¿À¸ÞÆ®¸® ·çƾ)°¡ ½ÇÇàÇÑ´Ù, ¹Ì¸® Á¤Àǵǰí Àִ ó¸®.
- D3DDECLMETHOD_DEFAULT :Å×¼³·¹ÀÌÅ͸¦ »ç¿ëÇϰí ÀÖ´Â °æ¿ì, ÀÌ ¿ä¼Ò´Â, º¸°£ µÇ´ÂÁö, Á¤Á¡ ÇÁ·Î¼¼¼ÀÇ ÀÔ·Â ·¹Áö½ºÅͳ»¿¡ º¹»ç µÈ´Ù. ÀÌ Ã³¸®ÀÇ ÀÔ·ÂÇüÀº ÀÓÀÇÀÌ´Ù. ÀÌ Ã³¸®ÀÇ Ãâ·ÂÇüÀº ÀÔ·ÂÇü°ú °°´Ù.
- D3DDECLMETHOD_PARTIALU :Á÷»ç°¢Çü ÆÐÄ¡ (R ÆÐÄ¡) À§¿¡ÀÇ Æ÷ÀÎÆ®¿¡ ÀÖ¾î¼ÀÇ U ¹æÇâ¿¡ÀÇ Á¢¼±À» ¿ä±¸ÇÑ´Ù. ÀÌ Ã³¸®ÀÇ ÀÔ·ÂÇüÀº, D3DDECLTYPE_FLOAT[43], D3DDECLTYPE_D3DCOLOR, D3DDECLTYPE_UBYTE4, ¶Ç´Â D3DDECLTYPE_SHORT4 ÀÌ´Ù. ÀÌ Ã³¸®ÀÇ Ãâ·ÂÇüÀº Ç×»ó D3DDECLTYPE_FLOAT3 ÀÌ´Ù.
- D3DDECLMETHOD_PARTIALV :R ÆÐÄ¡ À§¿¡ÀÇÁ¡ÀÇ V ¹æÇâÀÇ Á¢¼±À» °è»êÇÑ´Ù. ÀÌ Ã³¸®ÀÇ ÀÔ·ÂÇüÀº, D3DDECLTYPE_FLOAT[43], D3DDECLTYPE_D3DCOLOR, D3DDECLTYPE_UBYTE4, ¶Ç´Â D3DDECLTYPE_SHORT4 ÀÌ´Ù. ÀÌ Ã³¸®ÀÇ Ãâ·ÂÇüÀº Ç×»ó D3DDECLTYPE_FLOAT3 ÀÌ´Ù.
- D3DDECLMETHOD_CROSSUV :Rect/Tri ÆÐÄ¡(RT ÆÐÄ¡)ÀÇ Á¡¿¡¼ ¹ý¼±Àº µÎ Á¢¼±ÀÇ ¿ÜÀûÀ» ÃëÇØ °è»êÇÑ´Ù. ÀÌ Ã³¸®ÀÇ ÀÔ·ÂÇüÀº, D3DDECLTYPE_FLOAT[43], D3DDECLTYPE_D3DCOLOR, D3DDECLTYPE_UBYTE4, ¶Ç´Â D3DDECLTYPE_SHORT4 ÀÌ´Ù. ÀÌ Ã³¸®ÀÇ Ãâ·ÂÇüÀº Ç×»ó D3DDECLTYPE_FLOAT3 ÀÌ´Ù.
- D3DDECLMETHOD_UV :R ÆÐÄ¡ À§¿¡ÀÇÁ¡ÀÇ U °ª ¹× V °ªÀ» º¹»ç ÇÑ´Ù. 2D float ¸¦ »ý¼ºÇÑ´Ù. ÀÌ Ã³¸®ÀÇ ÀԷ ŸÀÔÀº D3DDECLTYPE_UNUSED ·Î ¼³Á¤ÇÑ´Ù. Ãâ·Â µ¥ÀÌÅÍÀÇ ÇüÅ´Â, Ç×»ó D3DDECLTYPE_FLOAT2 ÀÌ´Ù. ÀÔ·Â ½ºÆ®¸² ¹× ¿ÀÇÁ¼Â(offset)µµ »ç¿ëÇÏÁö ¾Ê´Â´Ù (´Ù¸¸ 0 À» ¼³Á¤ÇÒ Çʿ䰡 ÀÖ´Ù).
- D3DDECLMETHOD_LOOKUP :µð½ºÇ÷¹À̽º¸ÕÆ® ¸ÊÀ» ÂüÁ¶ÇÑ´Ù. ÀÔ·ÂÇü¿¡´Â D3DDECLTYPE_FLOAT[234] ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÅØ½ºÃ³ ¸Ê ÂüÁ¶¿¡´Â . x ¹× . y ÀÇ ¼ººÐ¸¸À» »ç¿ëÇÑ´Ù. ÀÌ Á¶ÀÛÀÇ Ãâ·ÂÇüÀº Ç×»ó D3DDECLTYPE_FLOAT4 ÀÌ´Ù. ÀåÄ¡°¡ µð½ºÇ÷¹À̽º¸ÕÆ® ¸ÊÇÎÀ» Áö¿ø Çϰí ÀÖ´Â °æ¿ì¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ ¸Þ¼µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº, D3DDECLUSAGE_SAMPLE »ÓÀÌ´Ù.
- D3DDECLMETHOD_LOOKUPPRESAMPLED :ÇÁ¸®»ùÇøµ ÇÑ µð½ºÇ÷¹À̽º¸ÕÆ® ¸ÊÀ» ÂüÁ¶ÇÑ´Ù. ÀԷ ŸÀÔ, ½ºÆ®¸² À妽º, ½ºÆ®¸² ¿ÀÇÁ¼Â(offset)´Â ¸ðµÎ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ŸÀÔÀº D3DDECLTYPE_UNUSED ·Î ¼³Á¤ÇØ, ½ºÆ®¸²°ú ¿ÀÇÁ¼Â(offset)´Â 0 À¸·Î ¼³Á¤ÇØ¾ß ÇÑ´Ù. ÀÌ Á¶ÀÛÀÇ Ãâ·ÂÇüÀº Ç×»ó D3DDECLTYPE_FLOAT4 ÀÌ´Ù. ÀåÄ¡°¡ µð½ºÇ÷¹À̽º¸ÕÆ® ¸ÊÇÎÀ» Áö¿ø Çϰí ÀÖ´Â °æ¿ì¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ ¸Þ¼µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº, D3DDECLUSAGE_SAMPLE »ÓÀÌ´Ù.
- Semantic type - ¹ý¼±ÀÎÁö ¾Æ´ÑÁö µî, ¿ä¼ÒÀÇ »ç¿ë¹ý. N ÆÐÄ¡¿¡ »ç¿ëÇÏ¸é Æí¸®ÇØ, ´Ù¾çÇÑ µ¥ÀÌÅÍ ·¹À̾ƿôÀ̳ª Á¤Á¡ ¼ÎÀÌ´õÀÇ »çÀÌÀÇ »óÈ£ Á¶ÀÛ¼ºÀÌ Çâ»óÇÑ´Ù. »ç¿ëÀÚ Á¤ÀÇ Çʵå (Microsoft Direct3D® ·Î Á¤ÀÇÇÑ ±âÁ¸ÀÇ Àǹ̵éÀ» °¡ÁöÁö ¾Ê´Â Çʵå)¿¡´Â TEXCOORDS Àǹ̵éÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. º¸Åë, ½Ã¸àƽ½º´Â, Á¤Á¡ ¼±¾ð°ú Á¤Á¡ ¼ÎÀÌ´õ°£ÀÇ ¹ÙÀεå¸ÞÄ«´ÏÁòÀÌ´Ù. ±×·¯³ª, °æ¿ì¿¡ µû¶ó¼´Â, Ưº°ÇÑ ÇØ¼®À» °¡Áö´Â ÀÏÀÌ ÀÖ´Ù. ¿¹¸¦ µé¾î, NORMAL ¶Ç´Â POSITION ½Ã¸àƽ½º¸¦ °¡Áö´Â ¿ä¼Ò´Â, Å×¼³·¹À̼ÇÀ» ¼³Á¤Çϱâ À§Çؼ N ÆÐÄ¡ Å×¼³·¹ÀÌÅͰ¡ »ç¿ëÇÑ´Ù.
´ÙÀ½ÀÇ °ÍÀÌ Çã°¡µÈ´Ù.
| ½Ã¸àƽ½º, »ç¿ë¹ýÀ妽º | Ưº°ÇÑ ÇØ¼® |
|---|
| (D3DDECLUSAGE_POSITION, 0 ) | °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õ¿Í N ÆÐÄ¡ Å×¼³·¹ÀÌÅÍÀÇ º¯È¯ µÇÁö ¾ÊÀº À§Ä¡. |
| (D3DDECLUSAGE_POSITION, 1) | ½ºÅ°´×À» À§ÇÑ, °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õÀÇ º¯È¯ µÇÁö ¾ÊÀº À§Ä¡. |
| (D3DDECLUSAGE_BLENDWEIGHT, 0) | °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õÀÇ ºí·»µåÀÇ Áß·®°¨. |
| (D3DDECLUSAGE_BLENDINDICES, 0) | Á¤Á¡ ¼ÎÀÌ´õ¿¡ ÀÇÇØ À妽º¸¦ ºÙÀÏ ¼ö ÀÖ´ø, ÆÈ·¹Æ®ÀÇ ½ºÅ°´×¿ëÀÇ Çà·Ä À妽º.
|
| (D3DDECLUSAGE_NORMAL, 0) | °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õ¿Í N ÆÐÄ¡ Å×¼³·¹ÀÌÅÍÀÇ Á¤Á¡ ¹ý¼±. |
| (D3DDECLUSAGE_NORMAL, 1) | ½ºÅ°´×À» À§ÇÑ, °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õÀÇ Á¤Á¡ ¹ý¼±. |
| (D3DDECLUSAGE_PSIZE, 0) | Æ÷ÀÎÆ® ½ºÇÁ¶óÀÌÆ® ±â´ÉÀÇ »ç°¢Çü¿¡ Æ÷ÀÎÆ®¸¦ È®´ëÇϱâ À§Çؼ(¶§¹®¿¡), ·¡½ºÅͶóÀÌÀúÀÇ ¼Â¾÷ ¿£ÁøÀÌ »ç¿ëÇÏ´Â, Æ÷ÀÎÆ® »çÀÌÁî ¼Ó¼º. |
| (D3DDECLUSAGE_TEXCOORD, n) | °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õ ¹× 3_0 ÀÌÀüÀÇ Çȼ¿ ¼ÎÀÌ´õÀÇ ÅØ½ºÃ³ ÁÂÇ¥. À̰͵éÀº, »ç¿ëÀÚ Á¤ÀÇ µ¥ÀÌÅ͸¦ °Ç³×ÁÖ±â À§Çؼ(¶§¹®¿¡) »ç¿ëÇÒ ¼ö ÀÖ´Ù. |
| (D3DDECLUSAGE_TANGENT, n) | Á¢¼±. Ưº°ÇÑ ÇØ¼®Àº ¾ø´Ù. |
| (D3DDECLUSAGE_BINORMAL, n) | Á¾¹ý¼±. Ưº°ÇÑ ÇØ¼®Àº ¾ø´Ù. |
| (D3DDECLUSAGE_TESSFACTOR, 0) | Å×¼³·¹À̼ÇÀÇ ·¹ÀÌÆ®¸¦ Á¦¾îÇϱâ À§Çؼ, Å×¼³·¹ÀÌ¼Ç À¯´ÏÆ®·Î »ç¿ëµÇ´Â Å×¼³·¹ÀÌ¼Ç °è¼ö. |
| (D3DDECLUSAGE_POSITIONT, 0) | º¯È¯ ÈÄÀÇ À§Ä¡. À̰ÍÀ» Æ÷ÇÔÇÑ ¼±¾ðÀÌ ¼³Á¤µÇ¸é Á¤Á¡ 󸮸¦ ¿ìȸµµ·Î ÇÑ´Ù. |
| (D3DDECLUSAGE_COLOR, 0) | °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õ ¹× 3_0 ÀÌÀüÀÇ Çȼ¿ ¼ÎÀÌ´õÀÇ µðÇ»Áî»ö. |
| (D3DDECLUSAGE_COLOR, 1) | °íÁ¤ ±â´É Á¤Á¡ ¼ÎÀÌ´õ ¹× 3_0 ÀÌÀüÀÇ Çȼ¿ ¼ÎÀÌ´õÀÇ ½ºÆåÅ¥·¯»ö. |
| (D3DDECLUSAGE_FOG, 0) | 3_0 ÀÌÀüÀÇ Çȼ¿ ¼ÎÀÌ´õ°¡ ¼³Á¤µÇ¾úÀ» ¶§¿¡, Çȼ¿ ¼ÎÀÌ´õ ÈÄ¿¡ »ç¿ëÇÏ´Â Æ÷±×(¾È°³:fog) ºí·»µå°ª. |
| (D3DDECLUSAGE_DEPTH, n) | ±íÀÌ. Ưº°ÇÑ ÇØ¼®Àº ¾ø´Ù. |
| (D3DDECLUSAGE_SAMPLE, n) | ÂüÁ¶ÇÑ µð½ºÇ÷¹À̽º¸ÕÆ®°ª. D3DDECLMETHOD_LOOKUPPRESAMPLED ¶Ç´Â D3DDECLMETHOD_LOOKUP ¸¸À¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. |
Á¤Á¡ ¿ä¼Ò³»ÀÇ Æ¯º°ÇÑ °ªÀ», Á¤Á¡ ¼ÎÀÌ´õ ¼±¾ðÀÇ ¸¶Áö¸·À̶ó°í º»´Ù. ÀÌ °ªÀº, #define D3DDECL_END() {0xFF, 0,0,0,0,0} ÀÌ´Ù.
Á¤Á¡ ¿ä¼ÒÀÇ Àǹ̵éÀ» ÁöÁ¤ÇÏ·Á¸é , UsageIndex ¸¦ Usage ¿Í ÇÔ²² »ç¿ëÇÑ´Ù. DirectX 8. x ¶§¿Í °°ÀÌ D3DVSDE_POSITION2 ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, Usage ·Î¼ D3DDECLUSAGE_POSITION ¸¦ ÁöÁ¤ÇØ, ÇÑÃþ ´õ UsageIndex = 1 À» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
¼±¾ðÀº, Å×¼³·¹ÀÌÅÍ ¿£Áø¿¡ÀÇ (¶Ç´Â, Å×¼³·¹ÀÌÅ͸¦ »ç¿ëÇÏÁö ¾ÊÀº °æ¿ì´Â Á¤Á¡ ó¸® ¿£Áø¿¡ÀÇ Á÷Á¢ÀûÀÎ) ÀԷ°ú Ãâ·ÂÀ» ÁöÁ¤ÇÑ´Ù. Á¤Á¡ ¿ä¼Ò³»ÀÇ Type Çʵå´Â, ¼±¾ð¿¡ ÀÔ·Â µ¥ÀÌÅÍÀÇ ÇüŸ¦ ÁöÁ¤ÇÑ´Ù. Ãâ·ÂÇüÀº ¸Þ¼µå¿¡ ÀÇÇØ Á¤ÇØÁø´Ù.
Á¤Á¡ ¼ÎÀÌ´õ¿¡´Â,{semantic, semantic index, register number} ¶ó°í ÇÏ´Â Çü½ÄÀÇ ÇÁ¸®¾ÈºÒÀÌ ÀÖ´Ù. ·±Å¸ÀÓÀº ¼±¾ðÀÇ Àǹ̵é°ú ¼ÎÀÌ´õÀÇ Àǹ̵é Á¤º¸¸¦ Á¶ÇÕÇØ, ÀÔ·Â ·¹Áö½ºÅÍ¿Í ¹ÙÀÌÆ® ¿ÀÇÁ¼Â(offset)¸¦ Á¶ÇÕÇØ 1 °³ÀÇ ½ºÆ®¸²¿¡ ³Ö´Â´Ù.
FVF ·ÎºÎÅÍ DirectX 9.0 ¼±¾ð¿¡ÀÇ ¸ÊÇÎ
| FVF | µ¥ÀÌÅÍ Å¸ÀÔ | »ç¿ë¹ý | »ç¿ë¹ýÀ妽º |
|---|
| D3DFVF_XYZ | D3DDECLTYPE_FLOAT3 | D3DDECLUSAGE_POSITION | 0 |
| D3DFVF_XYZRHW | D3DDECLTYPE_FLOAT4 | D3DDECLUSAGE_POSITIONT | 0 |
| D3DFVF_XYZW | D3DDECLTYPE_FLOAT4 | D3DDECLUSAGE_POSITION | 0 |
| D3DFVF_XYZB5 ¹× D3DFVF_LASTBETA_UBYTE4 | D3DVSDT_FLOAT3 D3DVSDT_FLOAT4 D3DVSDT_UBYTE4
| D3DDECLUSAGE_POSITION D3DDECLUSAGE_BLENDWEIGHT D3DDECLUSAGE_BLENDINDICES | 0 |
| D3DFVF_XYZB5 ¹× D3DFVF_LASTBETA_D3DCOLOR | D3DVSDT_FLOAT3 D3DVSDT_FLOAT4 D3DVSDT_D3DCOLOR
| D3DDECLUSAGE_POSITION D3DDECLUSAGE_BLENDWEIGHT D3DDECLUSAGE_BLENDINDICES | 0 |
| D3DFVF_XYZB5 | D3DDECLTYPE_FLOAT3 D3DDECLTYPE_FLOAT4 D3DDECLTYPE_FLOAT1
| D3DDECLUSAGE_POSITION D3DDECLUSAGE_BLENDWEIGHT D3DDECLUSAGE_BLENDINDICES | 0 |
| D3DFVF_XYZBn (n=1..4) | D3DDECLTYPE_FLOAT3 D3DDECLTYPE_FLOATn | D3DDECLUSAGE_POSITION D3DDECLUSAGE_BLENDWEIGHT | 0 |
| D3DFVF_XYZBn (n=1..4) ¹× D3DFVF_LASTBETA_UBYTE4 | D3DDECLTYPE_FLOAT3 D3DDECLTYPE_FLOAT(n-1) D3DDECLTYPE_UBYTE4 | D3DDECLUSAGE_POSITION D3DDECLUSAGE_BLENDWEIGHT D3DDECLUSAGE_BLENDINDICES | 0 |
| D3DFVF_XYZBn (n=1..4) ¹× D3DFVF_LASTBETA_D3DCOLOR | D3DDECLTYPE_FLOAT3 D3DDECLTYPE_FLOAT(n-1) D3DDECLTYPE_D3DCOLOR | D3DDECLUSAGE_POSITION D3DDECLUSAGE_BLENDWEIGHT D3DDECLUSAGE_BLENDINDICES | 0 |
| D3DFVF_NORMAL | D3DDECLTYPE_FLOAT3 | D3DDECLUSAGE_NORMAL | 0 |
| D3DFVF_PSIZE | D3DDECLTYPE_FLOAT1 | D3DDECLUSAGE_PSIZE | 0 |
| D3DFVF_DIFFUSE | D3DDECLTYPE_D3DCOLOR | D3DDECLUSAGE_COLOR | 0 |
| D3DFVF_SPECULAR | D3DDECLTYPE_D3DCOLOR | D3DDECLUSAGE_COLOR | 1 |
| D3DFVF_TEXCOORDSIZEm(n) | D3DDECLTYPE_FLOATm | D3DDECLUSAGE_TEXCOORD | n |
D3DDECLUSAGE_POSITIONT ¿¡ ÀÇÇÑ Á¤Á¡ ¼±¾ð
(D3DUSAGE_POSITIONT, 0)ÀÇ Á¤Á¡ ¿ä¼ÒÀÇ Á¸Àç´Â, À¯ÀÔÇÏ´Â Á¤Á¡ µ¥ÀÌÅÍ (D3DFVF_XYZRHW ºñÆ®¸¦ ¼³Á¤ÇÑ FVF µî)°¡, ÀÌ¹Ì Á¤Á¡ 󸮸¦ Á¾·áÇϰí ÀÖ´Â °ÍÀ», ÀåÄ¡¿¡ ´ëÇØ¼ ¾Ë¸®±â À§Çؼ(¶§¹®¿¡) »ç¿ëµÈ´Ù. µå·ÎÀ×(Drawing)½Ã¿¡´Â, ÇöÀç ¼³Á¤µÈ ¼±¾ð¿¡ (D3DUSAGE_POSITIONT, 0) ½Ã¸àƽ½º¸¦ °¡Áö´Â ¿ä¼Ò°¡ ÀÖ´Â °æ¿ì, D3DFVF_XYZRHW ºñÆ®¸¦ °¡Áö´Â FVF °¡ ¼³Á¤µÇ¾ú´ÂÁö¿Í °°ÀÌ, Á¤Á¡ ó¸® Àüü°¡ ½ºÅµ µÈ´Ù.
(D3DDECLUSAGE_POSITIONT, 0)¿¡ ÀÇÇÑ Á¤Á¡ ¼±¾ð¿¡´Â, ´ÙÀ½°ú °°Àº ¸î°³ÀÇ Á¦ÇÑÀÌ ÀÖ´Ù.
- ÀÌ·¯ÇÑ ¼±¾ð¿¡¼´Â, ½ºÆ®¸² Á¦·Î¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- Á¤Á¡ ¿ä¼Ò´Â, Áõ°¡ÇÏ´Â ½ºÆ®¸² ¿ÀÇÁ¼Â(offset)·Î ¼ÒÆ® ÇÒ Çʿ䰡 ÀÖ´Ù.
- ½ºÆ®¸² ¿ÀÇÁ¼Â(offset)´Â, alignment µÈ DWORD ÀÏ Çʿ䰡 ÀÖ´Ù.
- °°Àº (»ç¿ë¹ý, »ç¿ë¹ýÀ妽º) Æä¾î´Â, 1 ȸ¸¸ ¸®½ºÆ® ÇÑ´Ù.
- D3DDECLMETHOD_DEFAULT ¸Þ¼µå¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- ´Ù¸¥ Á¤Á¡ ¿ä¼Ò´Â, (D3DDECLUSAGE_POSITION, 0) ½Ã¸àƽ½º¸¦ °¡Áú ¼ö ¾ø´Ù.
°Ô´Ù°¡ ÀåÄ¡ µå¶óÀ̹öÀÇ ¹öÀü¿¡ °ü·ÃÇØ, ÀÌ·¯ÇÑ ¼±¾ð¿¡´Â ¸î°³ÀÇ Á¦ÇÑÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀÌ À¯È¿ÇÏ°Ô µÇ´Â °ÍÀº, Direct3D °¡ º¯È¯À» ½ÇÇàÇÏÁö ¾Ê°í , ¼±¾ðÀ» Á÷Á¢ µå¶óÀ̹ö¿¡ º¸³»±â ¶§¹®¿¡ ÀÖ´Ù.
DirectX 9.0 ÀÌÀüÀÇ µå¶óÀ̹ö
- ÀÔ·Â ¼±¾ðÀº, À¯È¿ÇÑ FVF ·Î ¹ø¿ª °¡´ÉÇØ¾ß ÇÑ´Ù. Áï, °°Àº ¼ø¼ÀÇ Á¤Á¡ ¿ä¼Ò¿Í ±× µ¥ÀÌÅÍÇüÀ» °¡Áö°í ÀÖÀ» Çʿ䰡 ÀÖ´Ù.
- ÅØ½ºÃ³ ÁÂÇ¥¿¡ Æ´»õ°¡ À־ ¾È µÈ´Ù. À̰ÍÀº, (D3DDECLUSAGE_TEXCOORD, n)¸¦ °¡Áö´Â Á¤Á¡ ¿ä¼Ò°¡ ÀÖ´Â °æ¿ì, (D3DDECLUSAGE_TEXCOORD, n-1)ÀÇ Á¤Á¡ ¿ä¼Òµµ ¾øÀ¸¸é ¾È µÈ´Ù.
Çȼ¿ ¼ÎÀÌ´õ ¹öÀü 3 ÀÇ Áö¿øÀÌ ¾ø´Â DirectX 9.0 µå¶óÀ̹ö
- ÀÔ·Â ¼±¾ðÀº, À¯È¿ÇÑ FVF ·Î ¹ø¿ª °¡´ÉÇØ¾ß ÇÑ´Ù. Áï, °°Àº ¼ø¼ÀÇ Á¤Á¡ ¿ä¼Ò¿Í ±× µ¥ÀÌÅÍÇüÀ» °¡Áö°í ÀÖÀ» Çʿ䰡 ÀÖ´Ù.
- ÅØ½ºÃ³ ÁÂÇ¥¿¡ Æ´»õ°¡ À־ ±¦Âú´Ù.
Çȼ¿ ¼ÎÀÌ´õ ¹öÀü 3 ÀÇ Áö¿øÀÌ ÀÖ´Â DirectX 9.0 µå¶óÀ̹ö
º¸´Ù ÀϹÝÀûÀÎ ¼±¾ðÀÌ Çã°¡µÈ´Ù.
- Á¤Á¡ ¿ä¼Ò´Â ¹«¼øÀ¸·Î, ÀÓÀÇÀÇ µ¥ÀÌÅÍÇüÀ» °¡Áú ¼ö°¡ ÀÖ´Ù.
- ÀåÄ¡°¡ D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET ¸¦ ¼³Á¤ÇÏ´Â °æ¿ì, º¹¼öÀÇ Á¤Á¡ ¿ä¼Ò´Â °°Àº ½ºÆ®¸² ¿ÀÇÁ¼Â(offset)¸¦ °øÀ¯ÇÒ ¼ö ÀÖ¾î µ¿½Ã¿¡ ´Ù¸¥ ŸÀÔÀ¸·Î ÇÒ ¼ö ÀÖ´Ù.
D3DDECLUSAGE_POSITIONT °¡ ¾ø´Â Á¤Á¡ ¼±¾ð
·±Å¸ÀÓÀº, ¼±¾ðÀÇ »ý¼ºÀ» °ËÁõÇÑ´Ù. ÀÌÇÏ¿¡¼´Â, À¯È¿ÇÑ ¼±¾ð¿¡ °üÇÑ ÀϹÝÀûÀÎ ±ÔÄ¢À» ³ªÅ¸³½´Ù.
- 1 °³ÀÇ ½ºÆ®¸²³»ÀÇ Á¤Á¡ ¿ä¼Ò´Â ¸ðµç °ÍÀÌ ¿¬¼ÓÇØ, ¿ÀÇÁ¼Â(offset)¿¡ ÀÇÇØ ºÐ·ùµÇÁö ¾ÊÀ¸¸é ¾È µÈ´Ù.
- ½ºÆ®¸² ¿ÀÇÁ¼Â(offset)´Â, alignment µÈ DWORD ÀÏ Çʿ䰡 ÀÖ´Ù.
- °°Àº(»ç¿ë¹ý, »ç¿ë¹ýÀ妽º) Æä¾î´Â, 1 ȸ¸¸ ¸®½ºÆ® ÇÑ´Ù.
- D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET °¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì, Á¤Á¡ ¿ä¼Ò¿¡¼´Â ´ÙÀ½ ÀÏÀÌ °¡´ÉÇÏ´Ù.
- º¹¼öÀÇ Á¤Á¡ ¿ä¼Ò´Â, ½ºÆ®¸²ÀÇ °°Àº ¿ÀÇÁ¼Â(offset)¸¦ °øÀ¯ÇÒ ¼ö ÀÖ´Ù.
- À̰͵éÀº, ¸ðµÎ ´Ù¸¥ ŸÀÔÀ¸·Î ÇÒ ¼ö ÀÖ¾î °¢ ŸÀÔÀº ´Ù¸¥ »çÀÌÁî·Î ÇÒ ¼ö ÀÖ´Ù.
- ¶Ç, ÀÓÀÇ¿¡ ¿À¹ö·¦ ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, 1 °³ÀÇ ¿ä¼Ò°¡ ½ºÆ®¸²ÀÇ Àå¼Ò¿¡¼ ½ÃÀÛ ÇØ, µ¿½Ã¿¡ ´Ù¸¥ ¿ä¼Ò°¡ Áß¾ÓÀÇ Àå¼Ò¿¡¼ ½ÃÀÛ ÇÒ ¼ö ÀÖ´Ù.
- Á¤Á¡ ¿ä¼Ò´Â, ÀÓÀÇÀÇ ¼ø¼·Î ½ºÆ®¸² ¿ÀÇÁ¼Â(offset)¸¦ °¡Áú ¼ö°¡ ÀÖ´Ù.
- Á¤Á¡ ¿ä¼ÒÀÇ ¼ö´Â 64 °³¸¦ ³Ñ¾î¼´Â ¾È µÈ´Ù.
- UsageIndex ´Â [0-15] ÀÇ ¹üÀ§°¡ ¾Æ´Ï¸é ¾ÈµÈ´Ù.
- DrawPrimitive API ¿Í ÇÔ²² »ç¿ëÇÏ´Â ¼±¾ðÀº, D3DDECLMETHOD_DEFAULT, D3DDECLMETHOD_LOOKUPPRESAMPLED, ¶Ç´Â D3DDECLMETHOD_LOOKUP ÀÌ¿ÜÀÇ Á¤Á¡ ¿ä¼Ò¸¦ °¡Áú ¼ö ¾ø´Ù.
- D3DDECLMETHOD_LOOKUP ¶Ç´Â LOOKUPPRESAMPLED ¸¦ Æ÷ÇÔÇÑ ¼±¾ð°ú ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº, ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ Á¤Á¡ ÆÄÀÌÇÁ¶óÀÎ »ÓÀÌ´Ù.
- DrawRectPatch/DrawTriPatch API ¿Í ÇÔ²² »ç¿ëÇÏ´Â ¼±¾ðÀº, D3DDECLMETHOD_LOOKUPPRESAMPLED ¶Ç´Â D3DDECLMETHOD_LOOKUP ¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò¸¦ °¡Áú ¼ö ¾ø´Ù.
- ¼±¾ðÀº, D3DDECLMETHOD_LOOKUP ¶Ç´Â D3DDECLMETHOD_LOOKUPPRESAMPLED ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ 1 °³ÀÇ ¿ä¼Ò¸¸À» °¡Áú ¼ö°¡ ÀÖ´Ù.
- D3DDECLMETHOD_LOOKUP ¶Ç´Â D3DDECLMETHOD_LOOKUPPRESAMPLED ¸¦ Æ÷ÇÔÇÑ ¼±¾ð¿¡, D3DDECLMETHOD_DEFAULT ÀÌ¿ÜÀÇ ¿ä¼Ò´Â ÁöÁ¤ÇÒ ¼ö ¾ø´Ù. µð½ºÇ÷¹À̽º¸ÕÆ® ¸ÊÇÎÀº N ÆÐÄ¡ ¿¡ ´ëÇØ¼¸¸ ½ÇÇàµÇ±â ¶§¹®ÀÌ´Ù.
- D3DDECLMETHOD_LOOKUP ¶Ç´Â D3DDECLMETHOD_LOOKUPPRESAMPLED ¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò´Â, (D3DDECLUSAGE_SAMPLE, n) ½Ã¸àƽ½º¿Í ÇÔ²² ¹Û¿¡ »ç¿ëÇÒ ¼ö ¾ø´Ù. ¿ªÀÇ °æ¿ìµµ ¸¶Âù°¡ÁöÀÌ´Ù.
- D3DDECLMETHOD_LOOKUP ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò°¡ ±âÁ¸ÀÇ Á¤Á¡ ¿ä¼ÒÀÇ ½ºÆ®¸² À妽º ¹× ¿ÀÇÁ¼Â(offset)¸¦ °¡Áö´Â °æ¿ì, ÀÌ Á¤Á¡ ¿ä¼Ò´Â °°Àº µ¥ÀÌÅÍÇüÀÌ ¾Æ´Ï¸é ¾ÈµÈ´Ù.
- D3DDECLMETHOD_LOOKUP ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò¿¡´Â, µ¥ÀÌÅÍÇü D3DDECLTYPE_FLOAT2/3/4 °¡ ÇÊ¿äÇÏ´Ù.
- ÇüŰ¡ D3DDECLMETHOD_CROSSUV, D3DDECLMETHOD_PARTIALU, ¹× D3DDECLMETHOD_PARTIALV ÀÇ Á¤Á¡ ¿ä¼Ò´Â, ȣȯ¼ºÀÌ ÀÖ´Â µ¥ÀÌÅÍÇüÀÇ Á¤Á¡ ¿ä¼ÒÀÇ ¿ÀÇÁ¼Â(offset)¸¦ °¡ÁöÁö ¾ÊÀ¸¸é ¾È µÈ´Ù.
- D3DDECLMETHOD_UV ¶Ç´Â D3DDECLMETHOD_LOOKUPPRESAMPLED ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò´Â, D3DDECLTYPE_UNUSED Çü, ½ºÆ®¸² À妽º Á¦·Î, ¹× ½ºÆ®¸² ¿ÀÇÁ¼Â(offset) Á¦·Î¸¦ °¡ÁöÁö ¾ÊÀ¸¸é ¾È µÈ´Ù.
- D3DDECLMETHOD_UV, D3DDECLMETHOD_PARTIALU, ¹× D3DDECLMETHOD_PARTIALV ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ ¼±¾ðÀº, DrawRectPatch ¸¸À¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- »ç¿ë¹ý D3DDECLUSAGE_TESSFACTOR ¿Í ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº, µ¥ÀÌÅÍÇü D3DDECLTYPE_FLOAT1 ¹× »ç¿ë¹ýÀ妽º 0 »ÓÀδÙ.
- Å×¼³·¹ÀÌ¼Ç (DrawRectPatch, DrawTriPatch, N-patches)¿¡ ¼±¾ðÀ» »ç¿ëÇÏ´Â °æ¿ì, µ¥ÀÌÅÍÇüÀº D3DDECLTYPE_SHORT4 ÀÌÇϰ¡ ¾Æ´Ï¸é ¾È µÈ´Ù.
- ƯÁ¤ÀÇ ÀåÄ¡ ´É·ÂÀ» ÇÊ¿ä·Î ÇÏ´Â ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ ¼±¾ð (¿¹¸¦ µé¾î, µð½ºÇ÷¹À̽º¸ÕÆ® ¸ÊÇÎÀ̳ª RT ÆÐÄ¡)Àº, ÀåÄ¡°¡ ±×°ÍµéÀ» Áö¿ø Çϰí ÀÖ´Â °æ¿ì¿¡ ÇÑÁ¤ÇØ »ý¼º ÇÒ ¼ö ÀÖ´Ù.
- Á¡°ú¼±À» µå·ÎÀ×(Drawing) Çϱâ À§Çؼ »ç¿ëÇÏ´Â Á¤Á¡ ¼±¾ðÀº, D3DDECLMETHOD_DEFAULT ÀÌ¿ÜÀÇ ¸Þ¼µå¸¦ °¡Áú ¼ö ¾ø´Ù.
- »ý¼º ÇÒ ¼ö ÀÖ´Â ¼±¾ðÀº, µå¶óÀ̹öÀÇ ´É·Â¿¡ µû¶ó¼ ´Ù¸£´Ù.
ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ Á¤Á¡ ÆÄÀÌÇÁ¶óÀο¡¼ÀÇ »ç¿ë ¹æ¹ý
- Direct3D ´Â µå·ÎÀ×(Drawing)½Ã¿¡, ÇöÀçÀÇ Á¤Á¡ ¼±¾ð°ú ÇöÀçÀÇ Á¤Á¡ ¼ÎÀÌ´õ ±â´É¾È¿¡ °°Àº "»ç¿ë¹ý - »ç¿ë¹ýÀ妽º" ÀÇ Æí¼ºÀ» ã´Â´Ù. ÀÌ Æí¼ºÀÌ ¹ß°ßµÇ¾úÀ» °æ¿ì, ¼ÎÀÌ´õ ±â´ÉÀÇ DCL ÀÇ ·¹Áö½ºÅͰ¡ Á¤Á¡ ¿ä¼ÒÀÇ ¼±¾ðÀ¸·Î¼ »ç¿ëµÈ´Ù.
- ÇöÀçÀÇ Á¤Á¡ ¼±¾ð³»ÀÇ Á¤Á¡ ¿ä¼Ò°¡ °¡Áö´Â »ç¿ë¹ýÀÌ ÇöÀçÀÇ Á¤Á¡ ¼ÎÀÌ´õ³»¿¡ ¾øÀ¸¸é ±× Á¤Á¡ ¿ä¼Ò´Â ¹«½ÃµÈ´Ù.
- 2.0 º¸´Ù ÀüÀÇ Á¤Á¡ ¼ÎÀÌ´õ¸¦ »ç¿ëÇÏ´Â °æ¿ì, ¸ðµç ½Ã¸àƽ½º (¼ÎÀÌ´õ ÄÚµå·Î ¸»Çß´Ù)´Â, µå·ÎÀ×(Drawing)½Ã¿¡ ¹ÙÀÎµå µÈ ¼±¾ð¿¡ Á¸ÀçÇϰí ÀÖÀ» Çʿ䰡 ÀÖ´Ù. Á¤Á¡ ¼ÎÀÌ´õ 2.0 ÀÌÈĸ¦ »ç¿ëÇÏ´Â °æ¿ì, ÀÌ Á¦ÇÑÀº Á¸ÀçÇÏÁö ¾Ê°í, À̰Ϳ¡ ÀÇÇØ, ¾ÖÇø®ÄÉÀ̼ÇÀº °°Àº Á¤Á¡ ¼ÎÀÌ´õ¸¦ Æ÷ÇÔÇÑ ´Ù¸¥ Á¤Á¡ ¼±¾ðÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº, Á¤Á¡ ¼ÎÀÌ´õ°¡ Á¤ÀûÀÎ Á¶°Ç¿¡ ±Ù°ÅÇØ ÀÔ·Â µ¥ÀÌÅ͸¦ Àо´Â °æ¿ì¿¡ Æí¸®ÇÏ´Ù. ÀÌ ÀÌÀ¯·Î½á ÃʱâȵÇÁö ¾Ê´Â Á¤Á¡ ¼ÎÀÌ´õ ·¹Áö½ºÅÍ´Â, ¹ÌÁ¤µµ¸®ÀÇ °ªÀ» °®´Â´Ù.
DirectX 8. x µå¶óÀ̹ö·Î Çϵå¿þ¾î Á¤Á¡ ó¸®¿Í ÇÔ²² »ç¿ëÇÏ´Â °æ¿ì, ÇÑÃþ ´õ ´ÙÀ½°ú °°Àº Á¦ÇÑÀÌ ÀÖ´Ù.
- Á¤Á¡ ¿ä¼Ò´Â ¿À¹ö·¦ Çϰųª °°Àº ¿ÀÇÁ¼Â(offset)¸¦ °øÀ¯Çϰųª ÇÒ ¼ö ¾ø´Ù.
- µ¥ÀÌÅÍÇüÀº, DirectX 8. x µå¶óÀ̹ö¸¦ ÀÌÇØÇÒ ¼ö ÀÖ´Â ¹üÀ§¿¡ Á¦ÇѵȴÙ.
ÁöÁ¤ÇÑ ¼±¾ðÀÌ DirectX 8. x Çü½ÄÀÇ ¼±¾ðÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø´Â °æ¿ì, CreateVertexDeclaration ´Â ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖ´Ù. ¹Í½º ¸ðµå ÀåÄ¡ÀÇ °æ¿ì, µå·ÎÀ×(Drawing)½Ã¿¡ ÀÌ ½ÇÆÐ°¡ ÀϾÙ. ÀÌ ¼ÎÀÌ´õ°¡ Çϵå¿þ¾î Á¤Á¡ 󸮷Π»ç¿ëµÇ°í ÀÖ´ÂÁö, ¼ÒÇÁÆ®¿þ¾î Á¤Á¡ 󸮷Π»ç¿ëµÇ°í ÀÖÀ»Áö¸¦ ¾Æ´Â °ÍÀº ÀÌ ¶§ »ÓÀÌ´Ù.
°íÁ¤ Á¤Á¡ ÆÄÀÌÇÁ¶óÀο¡¼ÀÇ »ç¿ë ¹æ¹ý
´ÙÀ½ÀÇ ±ÔÄ¢¿¡ µû¸£´Â ¼±¾ð¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- Á¤Á¡ ¿ä¼Ò°£¿¡ Æ´»õ°¡ À־ ¾È µÈ´Ù. DirectX 8. x ¼±¾ð¿¡¼´Â, SKIP ´Â »ç¿ëÇÒ ¼ö ¾øÁö¸¸, °íÁ¤ ±â´É ÆÄÀÌÇÁ¶óÀο¡¼´Â »ç¿ëµÈ´Ù.
- ½Ã¸àƽ½º (D3DDECLUSAGE_POSITION, 0)¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ¾î, À̰ÍÀº D3DDECLTYPE_FLOAT3 µ¥ÀÌÅÍÇüÀ» °¡Áú Çʿ䰡 ÀÖ´Ù.
- D3DDECLMETHOD_UV ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò´Â, »ç¿ë¹ý D3DDECLUSAGE_TEXCOORD ¶Ç´Â D3DDECLUSAGE_BLENDWEIGHT ¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.
- D3DDECLMETHOD_PARTIALU, _PARTIALV, ¶Ç´Â _CROSSUV ¸Þ¼µå¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò´Â, D3DDECLUSAGE_POSITION, _NORMAL, _BLENDWEIGHT, ¶Ç´Â _TEXCOORD »ç¿ë¹ý¸¸À¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶Ç, ÀԷ ŸÀÔ D3DDECLTYPE_FLOAT3 ¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù.
DirectX 8. x µå¶óÀ̹ö·Î Çϵå¿þ¾î Á¤Á¡ ó¸®¿Í ÇÔ²² ¼±¾ðÀ» »ç¿ëÇÏ´Â °æ¿ì, Direct3D ·±Å¸ÀÓÀº ´ÙÀ½ÀÇ ±ÔÄ¢À» »ç¿ëÇØ, ±×°ÍÀ» DirectX 8. x Çü½ÄÀÇ ¼±¾ðÀ¸·Î º¯È¯ÇÑ´Ù.
- º¹¼öÀÇ Á¤Á¡ ¿ä¼Ò°¡ 1 °³ÀÇ ½ºÆ®¸²³»ÀÇ °°Àº ¿ÀÇÁ¼Â(offset)¸¦ °øÀ¯Çϰųª ¿À¹ö·¦ ÇÒ ¼ö ¾ø´Ù.
- µ¥ÀÌÅÍ Å¸ÀÔÀº, D3DDECLTYPE_SHORT4 ÀÌÇϰ¡ ¾Æ´Ï¸é ¾ÈµÈ´Ù.
- D3DDECLMETHOD_DEFAULT, D3DDECLMETHOD_CROSSUV, D3DDECLMETHOD_UV ÀÇ °¢ ¸Þ¼µå¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- »ç¿ë¹ý°ú »ç¿ë¹ýÀ妽º´Â,Mapping DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ DirectX 8. x ¿¡ÀÇ ¸ÊÇο¡ µû¶ó ·¹Áö½ºÅͰª¿¡ º¯È¯µÈ´Ù.
- Mapping DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ DirectX 8. x ¿¡ÀÇ ¸ÊÇο¡¼´Â,DirectX 8. x Çü½ÄÀÇ ¼±¾ðÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Â, DirectX 9.0 ÀÇ ½Ã¸àƽ½º¸¦ ³ªÅ¸³»°í ÀÖ´Ù.
- ¼±¾ð¿¡ n °³ÀÇ Á¤Á¡ ¿ä¼Ò°¡ ÀÖ¾î, 0 - m (m < n)´Â FVF ¿¡ ¸Ê ÇÏÁö¸¸ (¿ä¼Ò´Â DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ FVF ºñÆ®¿¡ÀÇ ¸ÊÇÎÀ¸·Î ¼³¸íÇϰí ÀÖ´Ù),m+1 ÀÎ °æ¿ì, ´ÙÀ½ ÀÏÀÌ µé¾î¸Â´Â´Ù.
- m+2 ·ÎºÎÅÍ n-1 Á¤Á¡ ¿ä¼ÒÀÇ ¾î´ÀÂÊÀ̵çÀ» FVF/dx8decl ¿¡ ¸ÊÇÎ ÇÏ´Â °æ¿ì, ¼±¾ðÀº ¹«È¿ÀÌ´Ù.
- ¿ä¼Ò 0 ~ m ´Â, DirectX 8.0 ÀÌÀüÀÇ µå¶óÀ̹öÀÇ ·±Å¸ÀÓ°ú DirectX 9.0 µå¶óÀ̹ö¿¡ ÀÇÇØ,DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ FVF ºñÆ®¿¡ÀÇ ¸ÊÇÎÀ» »ç¿ëÇØ º¯È¯µÈ´Ù. m+1, m+2 ~ n-1 ´Â, ¿ä¼Ò 0 ~ m ÀÇ ÀÓÀÇÀÇ texcoord ·ÎºÎÅÍ, ¿¬¼ÓÇÏ´Â texcoord(k), texcoord(k+1)¿¡ ¸ÊÇÎ µÈ´Ù.
- ¸ÊÇÎ µÈ texcoord ÀÇ µ¥ÀÌÅÍÇüÀº float[1234] À̶ó°í °¡Á¤µÇ¾î ÇöÀçÀÇ ¿ä¼Ò¿¡ Æ÷ÇԵǾî ÀÖ´Â µ¥ÀÌÅÍÇü°ú ¿Å°Ü³õÀ» ¼ö ÀÖÁö¸¸, »çÀÌÁî´Â °°´Ù. ±× ¶§¹®¿¡, ±âÁ¸ÀÇ µ¥ÀÌÅÍÇüÀ»DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ FVF ºñÆ®¿¡ÀÇ ¸ÊÇο¡ ¾ø´Â µ¥ÀÌÅÍÇüÀ¸·Î ÇØµµ »ó°ü¾ø´Ù.
- k °¡ 8 ÀÌ»ó ¶§, FVF/dx8dec ¿¡ ´ëÇÑ ¼±¾ðÀº ¹«È¿°¡ µÈ´Ù.
- texcoords ¿¡ÀÇ ¸ÊÇÎÀÌ ¹ß»ýÇßÀ» °æ¿ì, ¼±¾ð Àüü°¡, µðÆúÆ® ÀÌ¿ÜÀÇ »ý¼º ¸Þ¼µå¸¦ °¡Áö´Â ¿ä¼Ò¸¦ Æ÷ÇÔÇØ¼´Â ¾È µÈ´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì, FVF/dx8decl ¿¡ ´ëÇÑ ¼±¾ðÀº ¹«È¿°¡ µÈ´Ù.
Mapping DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ DirectX 8. x ¿¡ÀÇ ¸ÊÇÎ
| DirectX 9.0 »ç¿ë¹ý | DirectX 9.0 »ç¿ë¹ýÀ妽º | DirectX 8.0 |
|---|
| D3DDECLUSAGE_POSITION | 0 | D3DVSDE_POSITION |
| D3DDECLUSAGE_POSITION | 1 | D3DVSDE_POSITION2 |
| D3DDECLUSAGE_NORMAL | 0 | D3DVSDE_NORMAL |
| D3DDECLUSAGE_NORMAL | 1 | D3DVSDE_NORMAL2 |
| D3DDECLUSAGE_BLENDWEIGHT | 0 | D3DVSDE_BLENDWEIGHT |
| D3DDECLUSAGE_BLENDINDICES | 0 | D3DVSDE_BLENDINDICES |
| D3DDECLUSAGE_PSIZE | 0 | D3DVSDE_PSIZE |
| D3DDECLUSAGE_COLOR | 0 | D3DVSDE_DIFFUSE |
| D3DDECLUSAGE_COLOR | 1 | D3DVSDE_SPECULAR |
| D3DDECLUSAGE_TEXCOORD | n | D3DVSDE_TEXCOORDn |
DirectX 7.0.x µå¶óÀ̹ö·Î Çϵå¿þ¾î Á¤Á¡ ó¸®¿Í ÇÔ²² ¼±¾ðÀ» »ç¿ëÇÏ´Â °æ¿ì, Direct3D ·±Å¸ÀÓÀº ´ÙÀ½ÀÇ ±ÔÄ¢À» »ç¿ëÇØ, ±×°ÍÀ» FVF ·Î º¯È¯ÇÑ´Ù.
- »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀº ½ºÆ®¸² 0 »ÓÀÌ´Ù (MaxStreams ´É·ÂÀ¸·ÎºÎÅÍ ¾ÆÅ°¶óµîÀΰ¡).
- Á¤Á¡ ¿ä¼ÒÀÇ ¼ø¼´Â, FVF ºñÆ®ÀÇ ¼ø¼¿Í °°Àº Çʿ䰡 ÀÖ´Ù.
- ÅØ½ºÃ³ ÁÂÇ¥¿¡ Æ´»õ°¡ À־ ¾È µÈ´Ù.
- DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ FVF ºñÆ®¿¡ÀÇ ¸ÊÇÎÀ¸·Î ¼³¸íµÇÁö ¾ÊÀº Á¤Á¡ ¿ä¼Ò´Â,DirectX 8.0 ÀÌÀüÀÇ ¸ðµç À¯È¿ÇÑ µå¶óÀ̹ö¿¡´Â º¯È¯ÇÏÁö ¸øÇϰí, ±× ¶§¹®¿¡(À§ÇØ), ÀÌ·¯ÇÑ µå¶óÀ̹ö¿¡¼´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù.
- ÀåÄ¡°¡, D3DPTEXTURECAPS_PROJECTED ¶Ç´Â D3DPTEXTURECAPS_CUBEMAP ´É·ÂÀÇ ¸ðµÎ ¼³Á¤ÇÏÁö ¾Ê´Â °æ¿ì, D3DDECLUSAGE_TEXCOORD ¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò¿¡´Â, D3DDECLTYPE_FLOAT2 ¸¸ÀÌ Çã°¡µÈ´Ù.
DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ FVF ºñÆ®¿¡ÀÇ ¸ÊÇÎ
| µ¥ÀÌÅÍ Å¸ÀÔ | »ç¿ë¹ý | »ç¿ë¹ýÀ妽º | FVF |
|---|
| D3DDECLTYPE_FLOAT3 | D3DDECLUSAGE_POSITION | 0 | D3DFVF_XYZ |
| D3DDECLTYPE_FLOAT4 | D3DDECLUSAGE_POSITIONT | 0 | D3DFVF_XYZRHW |
| D3DDECLTYPE_FLOATn | D3DDECLUSAGE_BLENDWEIGHT | 0 | D3DFVF_XYZBn |
| D3DDECLTYPE_UBYTE4 | D3DDECLUSAGE_BLENDINDICES | 0 | D3DFVF_XYZB (nWeights+1) |
| D3DDECLTYPE_FLOAT3 | D3DDECLUSAGE_NORMAL | 0 | D3DFVF_NORMAL |
| D3DDECLTYPE_FLOAT1 | D3DDECLUSAGE_PSIZE | 0 | D3DFVF_PSIZE |
| D3DDECLTYPE_D3DCOLOR | D3DDECLUSAGE_COLOR | 0 | D3DFVF_DIFFUSE |
| D3DDECLTYPE_D3DCOLOR | D3DDECLUSAGE_COLOR | 1 | D3DFVF_SPECULAR |
| D3DDECLTYPE_FLOATm | D3DDECLUSAGE_TEXCOORD | n | D3DFVF_TEXCOORDSIZEm(n) |
| D3DDECLTYPE_FLOAT3 | D3DDECLUSAGE_POSITION | 1 | ºÎÀû´ç¿ë |
| D3DDECLTYPE_FLOAT3 | D3DDECLUSAGE_NORMAL | 1 | ºÎÀû´ç¿ë |
ProcessVertices ¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¼±¾ðÀÇ »ç¿ë¹ý
ProcessVertices ÀÇ Ãâ·ÂÀ» ±â¼úÇÏ·Á¸é , Á¤Á¡ ¼±¾ðÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¼±¾ðÀº, ´ÙÀ½ÀÇ ±ÔÄ¢¿¡ µû¸¦ Çʿ䰡 ÀÖ´Ù.
- ½ºÆ®¸² Á¦·Î¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- Á¤Á¡ ¿ä¼Ò´Â °°Àº ¿ÀÇÁ¼Â(offset)¸¦ °øÀ¯Çϰųª ¼·Î ¿À¹ö·¦ Çϰųª ÇÒ ¼ö ¾ø´Ù.
- D3DDECLMETHOD_DEFAULT ¸Þ¼µå¸¸ÀÌ Çã°¡µÈ´Ù.
- D3DDECLTYPE_FLOATn ¶Ç´Â D3DDECLTYPE_D3DCOLOR µ¥ÀÌÅÍÇü¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
- (D3DDECLUSAGE_POSITION, 0) ¶Ç´Â (D3DDECLUSAGE_POSITIONT, 0)À» Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò´Â ºÒÇÊ¿äÇÏ´Ù.
- (D3DDECLUSAGE_POSITION, 0) ¹× (D3DDECLUSAGE_POSITIONT, 0)À» Æ÷ÇÔÇÑ Á¤Á¡ ¿ä¼Ò´Â, °°Àº ¼±¾ð¿¡ Á¸ÀçÇÒ ¼ö ¾ø´Ù.
- ÀÌ·¯ÇÑ ¼±¾ðÀ» »ç¿ëÇÏ´Â °æ¿ì, ÇöÀçÀÇ Á¤Á¡ ¼ÎÀÌ´õ´Â ¹öÀü 3.0 ÀÌÈİ¡ ¾Æ´Ï¸é ¾È µÈ´Ù.