PDA

View Full Version : کار با تصاویر دو بعدی در directx9



saffari2005
یک شنبه 05 تیر 1384, 07:54 صبح
سلام
برای rotate و scale تصاویر دو بعدی ( و نه اشکال) می توان از ماتریسها استفاده کرد , یا به بیان دیگر می توانیم از امکانات directx در این مورد بهره بگیریم یا خیر؟لطفا توضیح دهید.

seyedof
سه شنبه 07 تیر 1384, 09:26 صبح
بله می توان.

ممنون علی

saffari2005
سه شنبه 07 تیر 1384, 09:58 صبح
لطفا توضیح دهید
ممنون از توضیحاتتون! :sunglass:

seyedof
چهارشنبه 08 تیر 1384, 12:26 عصر
سلام
ID3DXSPRITE اینترفیسی هست که اینکارو انجام میده. میتونه یک Texture رو با یک تبدیل دو بعدی آفین (دوران، انتقال، بزرگنمایی) دلخواه نمایش بده. در مورد نحوه استفاده اش به راهنمای DirectX SDK مراجعه کنید.

ممنون علی

saffari2005
شنبه 11 تیر 1384, 10:47 صبح
اینم یه نمونه:


void Dxtest2Dlg::Draw( IDirect3DDevice9 *pocDevice )
{
D3DXIMAGE_INFO d3dxImageInfo;

D3DXCreateTextureFromFileEx( pocDevice,
"fighter.bmp",
1152,//m_nWidth, // I had to set width manually. D3DPOOL_DEFAULT works for textures but causes problems for D3DXSPRITE.
216,//m_nHeight, // I had to set height manually. D3DPOOL_DEFAULT works for textures but causes problems for D3DXSPRITE.
1, // Don't create mip-maps when you plan on using D3DXSPRITE. It throws off the pixel math for sprite animation.
0, //D3DPOOL_DEFAULT,
D3DFMT_UNKNOWN,
D3DPOOL_MANAGED, //D3DPOOL_DEFAULT,
D3DX_DEFAULT,
D3DX_DEFAULT,
D3DCOLOR_COLORVALUE(0.0f,0.0f,0.0f,1.0f),
&d3dxImageInfo,
NULL,
&m_pSpriteTexture );

D3DXCreateSprite( pocDevice, &m_pD3DXSprite );

D3DXVECTOR3 vCenter( 0.0f, 0.0f, 0.0f );
D3DXVECTOR3 vPosition( 0.0f, 0.0f, 0.0f );

D3DXMATRIX matRotate;
D3DXVECTOR2 vSpriteCenter( 125, 54 ); ///center of rotation

//strech 150% and Rotate 5.0 Radian
D3DXMatrixAffineTransformation2D( &matRotate, 1.5, &vSpriteCenter, 5.0f, NULL );

m_pD3DXSprite -> Begin( D3DXSPRITE_ALPHABLEND );
{
m_pD3DXSprite->SetTransform( &matRotate );
m_pD3DXSprite->Draw( m_pSpriteTexture,
CRect( 0, 0, 250, 108 ),
&vCenter,
&vPosition,
D3DCOLOR_COLORVALUE(1.0f,1.0f,1.0f,1.0f) );
}
m_pD3DXSprite->End();
}

saffari2005
شنبه 11 تیر 1384, 11:00 صبح
اگه کسی نمونه بهتری نوشته که هر سه مورد رو (دوران، انتقال، بزرگنمایی) رو شامل بشه و بهینه تر هم باشه لطفا ارائه کنه! در نمونه فوق دوران و بزرگنمایی پشتیبانی می شود. :wink: