Platform SDK: DirectX |
ここでは、Direct3DX ユーティリティ ライブラリを使用して、トランスフォームされたスプライトを描画する方法について詳しく説明する。
次のコードでは、スケーリングによりトランスフォームされたスプライトを構築して、描画する。
D3DXMATRIX matScale; D3DXMatrixScaling(&matScale, m_fScaleCurrent, m_fScaleCurrent, 1); D3DXMATRIX matTransform; D3DXBuildSpriteTransform(&matTransform, &rectViewport, m_fRotationCurrent); D3DXMATRIX mat; mat = matScale * matTransform; hr = ::D3DXDrawSpriteTransform( m_ptex, // テクスチャ m_pd3dDevice, // 3D デバイス &mat, // 行列 (BYTE)m_dwAlpha,// アルファ &srcRect // ソースの小矩形 );
次のコードでは、回転、平行移動、およびスケーリングによりトランスフォームされたスプライトを構築して、描画する。
D3DXMATRIX matScaleToSize; D3DXMatrixScaling(&matScaleToSize, 64, 48, 1); D3DXMATRIX matRotate; D3DXMatrixRotationZ(&matRotate, m_fRotationCurrent); D3DXMATRIX matTranslate; D3DXMatrixTranslation(&matTranslate, (float)pointDest.x, (float)pointDest.y, 0); D3DXMATRIX matScale; D3DXMatrixScaling(&matScale, m_fScaleCurrent, m_fScaleCurrent, 1); D3DXMATRIX mat; mat = matScaleToSize * matRotate * matScale * matTranslate; hr = ::D3DXDrawSpriteTransform( m_ptex, // テクスチャ m_pd3dDevice, // 3D デバイス &mat, // 行列 (BYTE)m_dwAlpha,// アルファ &srcRect // ソースの小矩形 );