LPD3DXSPRITE相关

使用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位颜色,并且用该颜色的透明度表示整个贴图的透明度

 

 

 

 

 

 

你可能感兴趣的:(LPD3DXSPRITE相关)