次の方法で共有


ID3DXSprite::Draw メソッド

ID3DXSprite::Draw メソッド

スクリーン空間に単純なスプライトを描画する。

構文

HRESULT Draw(      
    LPDIRECT3DTEXTURE9 pSrcTexture,
    CONST RECT *pSrcRect,
    CONST D3DXVECTOR2 *pScaling,
    CONST D3DXVECTOR2 *pRotationCenter,
    FLOAT Rotation,
    CONST D3DVECTOR2 *pTranslation,
    D3DCOLOR Color
);

パラメータ

  • pSrcTexture
    [in] スプライトに使うソース イメージを表す IDirect3DTexture9 インターフェイスへのポインタ。
  • pSrcRect
    [in] ソース テクスチャのどの部分をスプライトに使うかを示す RECT 構造体へのポインタ。このパラメータを NULL にすると、ソース イメージ全体がスプライトに使われる。ただし、ソース イメージの部分的な矩形を指定することもできる。トランスフォームの前に、スプライトのサイズが pSrcRect により左上隅を始点 (0,0) として定義される。
  • pScaling
    [in] スケーリング ベクトルを格納する D3DXVECTOR2 構造体へのポインタ。このパラメータが NULL の場合は、値 (1.0, 1.0) を使う。pScaling はベクトルなので、乗数 1.0 を使うとソース イメージのサイズが保持される。
  • pRotationCenter
    [in] 回転の中心を識別するスクリーン ピクセル内のポイントを格納する、D3DXVECTOR2 構造体へのポインタ。この引数が NULL の場合は、テクスチャの左上隅のポイント (0,0) が使われる。
  • Rotation
    [in] 反時計回りの回転を指定する値 (ラジアン単位)。
  • pTranslation
    [in] スクリーン ピクセルでの平行移動値を格納する D3DXVECTOR2 構造体へのポインタ。この引数が NULL の場合は、ポイント (0,0) を使う。
  • Color
    [in] D3DCOLOR 型。この値によりカラー チャンネルとアルファ チャンネルが乗算される。0xFFFFFFFF という値を使うと、元のソース カラーおよびアルファ データが維持される。

戻り値

成功した場合は、D3D_OK を返す。

失敗した場合は、D3DERR_INVALIDCALL を返す。

注意

トランスフォームの順序は、次のように指定される。

(Msc)-1 * (Msr)-1 * Ms * Msr * Msc * (Mrc)-1 * Mr * Mrc * Mt

ここで

  • Msc は中心のスケーリング行列である。
  • Msr はスケーリング回転行列である。
  • Ms はスケーリング行列である。
  • Mrc は回転行列の中心である。
  • Mr は回転行列である。
  • Mt は平行移動行列である。

このメソッドは、IDirect3DDevice9::BeginSceneIDirect3DDevice9::EndScene のペアの間で呼び出さなければならない。

ID3DXSprite::Begin が呼び出されていない場合、このメソッドは内部で ID3DXSprite::BeginID3DXSprite::End を呼び出す。このメソッドまたは ID3DXSprite::DrawTransform、あるいはその両方を引き続き呼び出す場合は、ID3DXSprite::DrawTransform とこのメソッドが毎回内部で ID3DXSprite::BeginID3DXSprite::End を呼び出すことによって生じる余分なオーバーヘッドを回避するため、ID3DXSprite::Begin を必ず呼び出すこと。

イメージをミラーリングするには、pScaling パラメータに適切な方向 (x または y、あるいはその両方) の負のベクトルを指定し、pSrcRect パラメータに指定されている転送元矩形の幅または高さ、あるいはその両方を、pTranslation パラメータに指定されている値に追加する。これによって回転の原点が変わることに注意すること。