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::BeginScene と IDirect3DDevice9::EndScene のペアの間で呼び出さなければならない。
ID3DXSprite::Begin が呼び出されていない場合、このメソッドは内部で ID3DXSprite::Begin と ID3DXSprite::End を呼び出す。このメソッドまたは ID3DXSprite::DrawTransform、あるいはその両方を引き続き呼び出す場合は、ID3DXSprite::DrawTransform とこのメソッドが毎回内部で ID3DXSprite::Begin と ID3DXSprite::End を呼び出すことによって生じる余分なオーバーヘッドを回避するため、ID3DXSprite::Begin を必ず呼び出すこと。
イメージをミラーリングするには、pScaling パラメータに適切な方向 (x または y、あるいはその両方) の負のベクトルを指定し、pSrcRect パラメータに指定されている転送元矩形の幅または高さ、あるいはその両方を、pTranslation パラメータに指定されている値に追加する。これによって回転の原点が変わることに注意すること。