DirectX Graphics ÇÁ·Î±×·¡¹Ö °¡À̵å Direct3D ÀÇ ±âÃÊÁö½Ä Á¤Á¡ ¼±¾ð   [¸ñÂ÷¿­¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
Á¤Á¡ ¼±¾ð
 
Microsoft DirectX 9.0

Á¤Á¡ ¼±¾ð


°³³ä»ó, Á¤Á¡ ¼±¾ðÀº, Á¤Á¡ 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 ±¸Á¶ ü³»ÀÇ Çʵå¿Í ±× ¼³¸íÀ» ³ªÅ¸³½´Ù.

Á¤Á¡ ¿ä¼Ò³»ÀÇ Æ¯º°ÇÑ °ªÀ», Á¤Á¡ ¼ÎÀÌ´õ ¼±¾ðÀÇ ¸¶Áö¸·À̶ó°í º»´Ù. ÀÌ °ªÀº, #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_XYZD3DDECLTYPE_FLOAT3D3DDECLUSAGE_POSITION0
D3DFVF_XYZRHWD3DDECLTYPE_FLOAT4D3DDECLUSAGE_POSITIONT0
D3DFVF_XYZWD3DDECLTYPE_FLOAT4D3DDECLUSAGE_POSITION0
D3DFVF_XYZB5 ¹× D3DFVF_LASTBETA_UBYTE4D3DVSDT_FLOAT3

D3DVSDT_FLOAT4

D3DVSDT_UBYTE4

D3DDECLUSAGE_POSITION

D3DDECLUSAGE_BLENDWEIGHT

D3DDECLUSAGE_BLENDINDICES
0
D3DFVF_XYZB5 ¹× D3DFVF_LASTBETA_D3DCOLORD3DVSDT_FLOAT3

D3DVSDT_FLOAT4

D3DVSDT_D3DCOLOR

D3DDECLUSAGE_POSITION

D3DDECLUSAGE_BLENDWEIGHT

D3DDECLUSAGE_BLENDINDICES
0
D3DFVF_XYZB5D3DDECLTYPE_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_UBYTE4D3DDECLTYPE_FLOAT3

D3DDECLTYPE_FLOAT(n-1)

D3DDECLTYPE_UBYTE4
D3DDECLUSAGE_POSITION

D3DDECLUSAGE_BLENDWEIGHT

D3DDECLUSAGE_BLENDINDICES
0
D3DFVF_XYZBn (n=1..4) ¹× D3DFVF_LASTBETA_D3DCOLORD3DDECLTYPE_FLOAT3

D3DDECLTYPE_FLOAT(n-1)

D3DDECLTYPE_D3DCOLOR
D3DDECLUSAGE_POSITION

D3DDECLUSAGE_BLENDWEIGHT

D3DDECLUSAGE_BLENDINDICES
0
D3DFVF_NORMALD3DDECLTYPE_FLOAT3D3DDECLUSAGE_NORMAL0
D3DFVF_PSIZED3DDECLTYPE_FLOAT1D3DDECLUSAGE_PSIZE0
D3DFVF_DIFFUSED3DDECLTYPE_D3DCOLORD3DDECLUSAGE_COLOR0
D3DFVF_SPECULARD3DDECLTYPE_D3DCOLORD3DDECLUSAGE_COLOR1
D3DFVF_TEXCOORDSIZEm(n)D3DDECLTYPE_FLOATmD3DDECLUSAGE_TEXCOORDn

D3DDECLUSAGE_POSITIONT ¿¡ ÀÇÇÑ Á¤Á¡ ¼±¾ð

(D3DUSAGE_POSITIONT, 0)ÀÇ Á¤Á¡ ¿ä¼ÒÀÇ Á¸Àç´Â, À¯ÀÔÇÏ´Â Á¤Á¡ µ¥ÀÌÅÍ (D3DFVF_XYZRHW ºñÆ®¸¦ ¼³Á¤ÇÑ FVF µî)°¡, ÀÌ¹Ì Á¤Á¡ 󸮸¦ Á¾·áÇϰí ÀÖ´Â °ÍÀ», ÀåÄ¡¿¡ ´ëÇØ¼­ ¾Ë¸®±â À§Çؼ­(¶§¹®¿¡) »ç¿ëµÈ´Ù. µå·ÎÀ×(Drawing)½Ã¿¡´Â, ÇöÀç ¼³Á¤µÈ ¼±¾ð¿¡ (D3DUSAGE_POSITIONT, 0) ½Ã¸àƽ½º¸¦ °¡Áö´Â ¿ä¼Ò°¡ ÀÖ´Â °æ¿ì, D3DFVF_XYZRHW ºñÆ®¸¦ °¡Áö´Â FVF °¡ ¼³Á¤µÇ¾ú´ÂÁö¿Í °°ÀÌ, Á¤Á¡ ó¸® Àüü°¡ ½ºÅµ µÈ´Ù.

(D3DDECLUSAGE_POSITIONT, 0)¿¡ ÀÇÇÑ Á¤Á¡ ¼±¾ð¿¡´Â, ´ÙÀ½°ú °°Àº ¸î°³ÀÇ Á¦ÇÑÀÌ ÀÖ´Ù.

°Ô´Ù°¡ ÀåÄ¡ µå¶óÀ̹öÀÇ ¹öÀü¿¡ °ü·ÃÇØ, ÀÌ·¯ÇÑ ¼±¾ð¿¡´Â ¸î°³ÀÇ Á¦ÇÑÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀÌ À¯È¿ÇÏ°Ô µÇ´Â °ÍÀº, Direct3D °¡ º¯È¯À» ½ÇÇàÇÏÁö ¾Ê°í , ¼±¾ðÀ» Á÷Á¢ µå¶óÀ̹ö¿¡ º¸³»±â ¶§¹®¿¡ ÀÖ´Ù.

DirectX 9.0 ÀÌÀüÀÇ µå¶óÀ̹ö

Çȼ¿ ¼ÎÀÌ´õ ¹öÀü 3 ÀÇ Áö¿øÀÌ ¾ø´Â DirectX 9.0 µå¶óÀ̹ö

Çȼ¿ ¼ÎÀÌ´õ ¹öÀü 3 ÀÇ Áö¿øÀÌ ÀÖ´Â DirectX 9.0 µå¶óÀ̹ö

º¸´Ù ÀϹÝÀûÀÎ ¼±¾ðÀÌ Çã°¡µÈ´Ù.

D3DDECLUSAGE_POSITIONT °¡ ¾ø´Â Á¤Á¡ ¼±¾ð

·±Å¸ÀÓÀº, ¼±¾ðÀÇ »ý¼ºÀ» °ËÁõÇÑ´Ù. ÀÌÇÏ¿¡¼­´Â, À¯È¿ÇÑ ¼±¾ð¿¡ °üÇÑ ÀϹÝÀûÀÎ ±ÔÄ¢À» ³ªÅ¸³½´Ù.

ÇÁ·Î±×·¡¹Ö °¡´ÉÇÑ Á¤Á¡ ÆÄÀÌÇÁ¶óÀο¡¼­ÀÇ »ç¿ë ¹æ¹ý

DirectX 8. x µå¶óÀ̹ö·Î Çϵå¿þ¾î Á¤Á¡ ó¸®¿Í ÇÔ²² »ç¿ëÇÏ´Â °æ¿ì, ÇÑÃþ ´õ ´ÙÀ½°ú °°Àº Á¦ÇÑÀÌ ÀÖ´Ù.

ÁöÁ¤ÇÑ ¼±¾ðÀÌ DirectX 8. x Çü½ÄÀÇ ¼±¾ðÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø´Â °æ¿ì, CreateVertexDeclaration ´Â ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖ´Ù. ¹Í½º ¸ðµå ÀåÄ¡ÀÇ °æ¿ì, µå·ÎÀ×(Drawing)½Ã¿¡ ÀÌ ½ÇÆÐ°¡ ÀϾ´Ù. ÀÌ ¼ÎÀÌ´õ°¡ Çϵå¿þ¾î Á¤Á¡ 󸮷Π»ç¿ëµÇ°í ÀÖ´ÂÁö, ¼ÒÇÁÆ®¿þ¾î Á¤Á¡ 󸮷Π»ç¿ëµÇ°í ÀÖÀ»Áö¸¦ ¾Æ´Â °ÍÀº ÀÌ ¶§ »ÓÀÌ´Ù.

°íÁ¤ Á¤Á¡ ÆÄÀÌÇÁ¶óÀο¡¼­ÀÇ »ç¿ë ¹æ¹ý

´ÙÀ½ÀÇ ±ÔÄ¢¿¡ µû¸£´Â ¼±¾ð¸¸ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

DirectX 8. x µå¶óÀ̹ö·Î Çϵå¿þ¾î Á¤Á¡ ó¸®¿Í ÇÔ²² ¼±¾ðÀ» »ç¿ëÇÏ´Â °æ¿ì, Direct3D ·±Å¸ÀÓÀº ´ÙÀ½ÀÇ ±ÔÄ¢À» »ç¿ëÇØ, ±×°ÍÀ» DirectX 8. x Çü½ÄÀÇ ¼±¾ðÀ¸·Î º¯È¯ÇÑ´Ù.

Mapping DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ DirectX 8. x ¿¡ÀÇ ¸ÊÇÎ

DirectX 9.0 »ç¿ë¹ýDirectX 9.0 »ç¿ë¹ýÀ妽ºDirectX 8.0
D3DDECLUSAGE_POSITION0D3DVSDE_POSITION
D3DDECLUSAGE_POSITION1D3DVSDE_POSITION2
D3DDECLUSAGE_NORMAL0D3DVSDE_NORMAL
D3DDECLUSAGE_NORMAL1D3DVSDE_NORMAL2
D3DDECLUSAGE_BLENDWEIGHT0D3DVSDE_BLENDWEIGHT
D3DDECLUSAGE_BLENDINDICES0D3DVSDE_BLENDINDICES
D3DDECLUSAGE_PSIZE0D3DVSDE_PSIZE
D3DDECLUSAGE_COLOR0D3DVSDE_DIFFUSE
D3DDECLUSAGE_COLOR1D3DVSDE_SPECULAR
D3DDECLUSAGE_TEXCOORDnD3DVSDE_TEXCOORDn

DirectX 7.0.x µå¶óÀ̹ö·Î Çϵå¿þ¾î Á¤Á¡ ó¸®¿Í ÇÔ²² ¼±¾ðÀ» »ç¿ëÇÏ´Â °æ¿ì, Direct3D ·±Å¸ÀÓÀº ´ÙÀ½ÀÇ ±ÔÄ¢À» »ç¿ëÇØ, ±×°ÍÀ» FVF ·Î º¯È¯ÇÑ´Ù.

DirectX 9.0 ¼±¾ðÀ¸·ÎºÎÅÍ FVF ºñÆ®¿¡ÀÇ ¸ÊÇÎ

µ¥ÀÌÅÍ Å¸ÀÔ»ç¿ë¹ý»ç¿ë¹ýÀ妽ºFVF
D3DDECLTYPE_FLOAT3D3DDECLUSAGE_POSITION0D3DFVF_XYZ
D3DDECLTYPE_FLOAT4D3DDECLUSAGE_POSITIONT0D3DFVF_XYZRHW
D3DDECLTYPE_FLOATnD3DDECLUSAGE_BLENDWEIGHT0D3DFVF_XYZBn
D3DDECLTYPE_UBYTE4D3DDECLUSAGE_BLENDINDICES0D3DFVF_XYZB (nWeights+1)
D3DDECLTYPE_FLOAT3D3DDECLUSAGE_NORMAL0D3DFVF_NORMAL
D3DDECLTYPE_FLOAT1D3DDECLUSAGE_PSIZE0D3DFVF_PSIZE
D3DDECLTYPE_D3DCOLORD3DDECLUSAGE_COLOR0D3DFVF_DIFFUSE
D3DDECLTYPE_D3DCOLORD3DDECLUSAGE_COLOR1D3DFVF_SPECULAR
D3DDECLTYPE_FLOATmD3DDECLUSAGE_TEXCOORDnD3DFVF_TEXCOORDSIZEm(n)
D3DDECLTYPE_FLOAT3D3DDECLUSAGE_POSITION1ºÎÀû´ç¿ë
D3DDECLTYPE_FLOAT3D3DDECLUSAGE_NORMAL1ºÎÀû´ç¿ë

ProcessVertices ¸¦ Æ÷ÇÔÇÑ Á¤Á¡ ¼±¾ðÀÇ »ç¿ë¹ý

ProcessVertices ÀÇ Ãâ·ÂÀ» ±â¼úÇÏ·Á¸é , Á¤Á¡ ¼±¾ðÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¼±¾ðÀº, ´ÙÀ½ÀÇ ±ÔÄ¢¿¡ µû¸¦ Çʿ䰡 ÀÖ´Ù.



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