ID3DXSprite

ID3DXSprite´Â 2D À̹ÌÁö¸¦ ·»´õ¸µÇÏ´Â °´Ã¼ÀÌ´Ù.
ID3DXSprite´Â ±×¸®±â À§ÇÑ ½ºÄÉÄ¡ºÏÀ¸·Î ¿©±â¿¡ ¹º°¡¸¦ º¸¿©ÁÙ·Á¸é IDirect3DTexture9ÀÇ ÅؽºÃĸ¦ ¿Ã·Á¾ß ÇÑ´Ù.

¿ÞÂÊÀÇ À̹ÌÁö´Â ID3DXSprite¸¦ ÀÌ¿ëÇؼ­ ±×¸° À̹ÌÁö°í ¿À¸¥ÂÊ À̹ÌÁö´Â 3D °ø°£¿¡ ·»´õ¸µÇÑ À̹ÌÁö´Ù.

°úÁ¤À» »ý¼º, ¼Ò¸ê, ±×¸®±â¼ø ¾Ë¾Æº»´Ù.

< ID3DXSprite »ý¼º >

ID3DXSprite »ý¼º°´Ã¼¸¦ ¸®ÅϹޱâ À§ÇØ µÎ ¹ø° ÀÎÀÚ¿¡ ID3DXSpriteÀÇ Æ÷ÀÎÅÍÀÇ ÅÍÀÎÅ͸¦ ³Ñ°ÜÁØ´Ù.

HRESULT D3DXCreateSprite( LPDIRECT3DDEVICE9 pDevice, LPD3DXSPRITE* ppSprite);

< ID3DXSprite ¼Ò¸ê >

ID3DXSprite °´Ã¼¸¦ ÇØÁ¦ÇÑ´Ù.

ID3DXSprite::Release( )

< ID3DXSprite  ±×¸®±â >
ID3DXSprite::Draw( )¸¦ È£ÃâÇÏ¸é ±×¸®±â¸¦ ÇÑ´Ù.
½ºÇÁ¶óÀÌÆ®¸¦ ´ÙÀÌ·ºÆ®XÀÇ BeginScene( )°ú EndScene( ) »çÀÌ¿¡ ±×¸®¸é ½±°Ô À̹ÌÁö¸¦ ±×¸±¼ö ÀÖ´Ù.
±âº»ÀûÀÎ ±×¸®±â´Â Å©°Ô ¾î·Á¿îÁ¡ÀÌ ¾ø´Ù.

ID3DXSPRITE*        pSprite

IDIRECT3DDEVICE9*    pDevice;

IDIRECT3DTEXTURE9*    pTexture = NULL;

POINT pos;

pos.x = 100;

pos.y = 100;

 

pDevice->BeginScene()

 

pSprite->Begin(0);

pSprite->Draw( pTexture, NULL, &pos, NULL, 0xffffffff );

pSprite->End();

 

pDevice->EndScene();

pDevice->Present(NULL, NULL, NULL, NULL);

Çà·ÄÀ» ÀÌ¿ëÇؼ­ ȸÀü, À̵¿, ½ºÄÉÀϸµ ÇÏ¸é º¯È¯À» ¾î¶»°Ô ÇØ¾ß µÇ´ÂÁö È¥¶õ½º·´´Ù.
Çà¿­À» ÀÌ¿ëÇÑ º¯È¯À» ÇÒ·Á¸é ID3DXSPRITE::SetTransform( )À» »ç¿ëÇÑ´Ù.

POINT pos;

pos.x = 0;

pos.y = 0;

 

D3DXMATRIX spriteMat;

D3DXMatrixRotationZ( &spriteMat, D3DXToRadian(-15.0f) );

spriteMat._41 = 100.0f;  

spriteMat._42 = 100.0f;   

spriteMat._11 = 0.25f;

spriteMat._22 = 0.25f;

pSprite->SetTransform( &spriteMat );

 

pSprite->Draw( pTexture, NULL, &pos, NULL, 0xffffffff );

½ºÇÁ¶óÀÌÆ®¸¦ ¹Ý½Ã°è ¹æÇâÀ¸·Î 15µµ ¸¸Å­ ȸÀüÇϱâ À§Çؼ­ D3DXToRadian(-15.0f) ¸¸Å­ ZÃàÀ» ȸÀü ½ÃŲ´Ù.
xÃàÀ¸·Î 100¸¸Å­ yÃàÀ¸·Î 100¸¸Å­ À̵¿ÇÑ´Ù. ÀÌ ¶§ À̵¿ °ªÀº ½ºÅ©¸° ÁÂÇ¥ÀÌ´Ù.
xÃàÀ¸·Î 0.25¹è, yÃàÀ¸·Î 0.25¹è Å©±â¸¦ Ãà¼ÒÇÑ´Ù.
Draw( )½Ã ÁÖ´ø À§Ä¡°ªÀº 0, 0À» ³Ö´Â´Ù.

< Texture2D Ŭ·¡½º > :

ÅؽºÃĸ¦ ·ÎµùÇϴ Ŭ·¡½ºÀÌ´Ù.

//Texture2D Ŭ·¡½º ¸Þ¼Òµå

void  LoadTexture( IDirect3DDevice9*  pDevice, char* szFileName, UINT width = D3DX_DEFAULT_NONPOW2,                      UINT height = D3DX_DEFAULT_NONPOW2 );  

                 

void  Release();

UINT GetWidth();      

UINT GetHight() ;           

IDirect3DTexture9* GetTexture();      

const  D3DXIMAGE_INFO& GetTextureInfo();  

 

D3DXCreateTextureFromFileEx(  ) ·Î ÅؽºÃĸ¦ ·Îµù½Ã ¼¼ ¹ø°, ³× ¹ø° ÀÎÀÚ Width, Height ÀÎÀÚ¿¡ 

DX_DEFAULT_NONPOW2 °ªÀ» ÁÖ¸é ÅؽºÃÄ Å©±â¸¦ NÀÇ 2½Â ¾øÀÌ ¿øº»±×´ë·Î Àд´Ù.

< Sprite Ŭ·¡½º >

ID3DXSprite¸¦ »ç¿ëÇϱâ À§ÇÑ Å¬·¡½º Sprite Ŭ·¡½ºÀÌ´Ù. Texture2D¸¦ ÀÌ¿ëÇÏ´Â ÀÌ¿ëÇØ À̹ÌÁö¸¦ »Ñ¸°´Ù.

//Sprite Ŭ·¡½º ¸Þ¼Òµå

void Begin( DWORD flags );              

void  End();                           

void  Draw( Texture2D* pTexture, const  POINT& pos, D3DCOLOR color );

void  Draw( Texture2D* pTexture, const  POINT& pos, const  RECT& surRect, D3DCOLOR color );       

void  Draw( Texture2D* pTexture, const  POINT& pos, const  D3DXMATRIX& transMatrix, const  RECT& surRect, D3DCOLOR color );

void  Draw( Texture2D* pTexture, const  POINT& pos, const  POINT& size, const  RECT& surRect, D3DCOLOR color );

void  Draw( Texture2D* pTexture, const  RECT& desRect, const  RECT& surRect, D3DCOLOR color );

void  Draw( Texture2D* pTexture, const  RECT& desRect, D3DCOLOR color );

ID3DXSprite* GetSprite();

 

< Âü°í : ID3DXSprite::Draw ¼³¸í >

HRESULT ID3DXSprite::Draw(     

    LPDIRECT3DTEXTURE9 pSrcTexture,

    CONST RECT *pSrcRect,

    CONST D3DXVECTOR2 *pScaling,

    CONST D3DXVECTOR2 *pRotationCenter,

    FLOAT Rotation,

    CONST D3DVECTOR2 *pTranslation,

    D3DCOLOR Color

)

pSrcTexture
[in] ½ºÇÁ¶óÀÌÆ®¿¡ »ç¿ëÇÏ´Â ¼Ò½º À̹ÌÁö¸¦ ³ªÅ¸³»´Â IDirect3DTexture9 ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅÍ.

pSrcRect
[in] ¼Ò½º ÅؽºÃ³ÀÇ ¾î´À ºÎºÐÀ» ½ºÇÁ¶óÀÌÆ®¿¡ »ç¿ëÇÏ´ÂÁö¸¦ ³ªÅ¸³»´Â RECT ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ. ÀÌ ÆĶó¹ÌÅ͸¦ NULL ·Î ÇÏ¸é ¼Ò½º À̹ÌÁö Àüü°¡ ½ºÇÁ¶óÀÌÆ®¿¡ »ç¿ëµÈ´Ù. ´Ù¸¸, ¼Ò½º À̹ÌÁöÀÇ ºÎºÐÀûÀÎ Á÷»ç°¢ÇüÀ» ÁöÁ¤ÇÒ ¼öµµ ÀÖ´Ù. º¯È¯ÀÇ Àü¿¡, ½ºÇÁ¶óÀÌÆ®ÀÇ »çÀÌÁî°¡ pSrcRect ¿¡ ÀÇÇØ Á»󱸼®À» ½ÃÁ¡ (0,0)À¸·Î¼­ Á¤ÀǵȴÙ.

pScaling
[in] ½ºÄÉÀϸµ º¤Å͸¦ ÀúÀå ÇÏ´Â D3DXVECTOR2 ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ. ÀÌ ÆĶó¹ÌÅÍ°¡ NULL ÀÇ °æ¿ì´Â, °ª (1.0, 1.0)À» »ç¿ëÇÑ´Ù. pScaling ´Â º¤ÅÍÀ̹ǷÎ, ½Â¼ö 1.0 À» »ç¿ëÇÏ¸é ¼Ò½º À̹ÌÁöÀÇ »çÀÌÁî°¡ º¸°ü À¯ÁöµÈ´Ù.

pRotationCenter
[in] ȸÀüÀÇ Áß½ÉÀ» ½Äº°ÇÏ´Â ½ºÅ©¸° Çȼ¿³»ÀÇ Æ÷ÀÎÆ®¸¦ ÀúÀå ÇÏ´Â,D3DXVECTOR2 ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ. ÀÌ Àμö°¡ NULL ÀÇ °æ¿ì´Â, ÅؽºÃ³ÀÇ Á»󱸼®ÀÇ Æ÷ÀÎÆ® (0,0)°¡ »ç¿ëµÈ´Ù.

Rotation
[in] ¹Ý½Ã°èȸÀüÀÇ È¸ÀüÀ» ÁöÁ¤ÇÏ´Â °ª (¶óµð¾È ´ÜÀ§).

pTranslation
[in] ½ºÅ©¸° Çȼ¿¿¡¼­ÀÇ ÆòÇàÀ̵¿°ªÀ» ÀúÀå ÇÏ´Â D3DXVECTOR2 ±¸Á¶Ã¼ÀÇ Æ÷ÀÎÅÍ. ÀÌ Àμö°¡ NULL ÀÇ °æ¿ì´Â, Æ÷ÀÎÆ® (0,0)¸¦ »ç¿ëÇÑ´Ù.

Color
[in] D3DCOLOR Çü. ÀÌ °ª¿¡ ÀÇÇØ Ä÷¯ ä³Î°ú ¾ËÆÄ Ã¤³ÎÀÌ °ö¼ÀµÈ´Ù. 0xFFFFFFFF ¶ó°í ÇÏ´Â °ªÀ» »ç¿ëÇÏ¸é ¿øÀÇ ¼Ò½º Ä÷¯ ¹× ¾ËÆÄ µ¥ÀÌÅÍ°¡ À¯ÁöµÈ´Ù.

¹Ýȯ°ª
¼º°øÇßÀ» °æ¿ì´Â,D3D_OK ¸¦ µ¹·ÁÁØ´Ù.
½ÇÆÐÇßÀ» °æ¿ì´Â,D3DERR_INVALIDCALL ¸¦ µ¹·ÁÁØ´Ù.

º¯È¯ÀÇ ¼ø¼­´Â, ´ÙÀ½°ú °°ÀÌ ÁöÁ¤µÈ´Ù.

(Msc)-1 * (Msr)-1 * Ms * Msr * Msc * (Mrc)-1 * Mr * Mrc * Mt

Msc ´Â Áß½ÉÀÇ ½ºÄÉÀϸµ Çà·ÄÀÌ´Ù.
Msr ´Â ½ºÄÉÀϸµ ȸÀü Çà·ÄÀÌ´Ù.
Ms ´Â ½ºÄÉÀϸµ Çà·ÄÀÌ´Ù.
Mrc ´Â ȸÀü Çà·ÄÀÇ Áß½ÉÀÌ´Ù.
Mr ´Â ȸÀü Çà·ÄÀÌ´Ù.
Mt ´Â ÆòÇàÀ̵¿ Çà·ÄÀÌ´Ù.

ÇÁ·ÎÁ§Æ®: sprite.zip