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        // ソースの小矩形
           );