使用DirectX sdk April 2006
下面是使用sprite绘制2维图形的基本过程
1.sprite通过
HRESULT D3DXCreateSprite(
LPDIRECT3DDEVICE9 pDevice,
LPD3DXSPRITE * ppSprite)
来建立,当然pDevice是要先建立好的
2.创建贴图,个人经验是不能使用D3DXCreateTextureFromFile(),而应该用D3DXCreateTextureFromFileEx(),文档上说后者比前者要高级一些,事实上如果使用前者创建贴图,绘制时会出现明显的拉伸变形。
3.绘制前必须使用ID3DXSprite::Begin()进行准备,
然后使用ID3DXSprite::Draw()进行绘制,
绘制结束后用ID3DXSprite::End()收尾。
大致代码如下:
LPD3DXSPRITE m_sprite;
D3DXCreateSprite( m_device, &m_sprite );//步骤1
//步骤2
if( FAILED( D3DXCreateTextureFromFileEx(m_device,L"mainMenu.jpg",D3DX_DEFAULT,D3DX_DEFAULT,D3DX_DEFAULT,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_FILTER_NONE,
D3DX_DEFAULT,0xffffffff,NULL,NULL,&mainMenu)))
return E_FAIL;
//步骤3
if( SUCCEEDED( m_sprite->Begin( D3DXSPRITE_ALPHABLEND ) ) )
{
m_sprite->Draw( mainMenu, NULL, NULL, NULL, 0xffffffff );
m_sprite->End();
}
最后记一下ID3DXSprite::Draw()
HRESULT Draw(
LPDIRECT3DTEXTURE9 pTexture,
CONST RECT * pSrcRect,
CONST D3DXVECTOR3 * pCenter,
CONST D3DXVECTOR3 * pPosition,
D3DCOLOR Color
);
pTexture : 上面说的用D3DXCreateTextureFromFileEx创建的贴图
pSrcRect : 需要绘制的贴图上的矩形范围
pCenter : 贴图的中心点,如果要对贴图进行旋转缩放等操作,都以此点为中心
pPosition: 上面的pCenter点绘制到窗口中的位置
Color : 32位颜色,并且用该颜色的透明度表示整个贴图的透明度