Platform SDK: DirectX

D3DXDrawSpriteSimple

D3DXDrawSpriteSimple 関数は、スプライトを Direct3D デバイスにレンダリングする。この関数は、IDirect3DDevice7::BeginScene 関数を呼び出した後で、IDirect3DDevice7::EndScene 関数を呼び出す前に呼び出す必要がある。

HRESULT D3DXDrawSpriteSimple(
  LPDIRECTDRAWSURFACE7 pd3dTexture,
  LPDIRECT3DDEVICE7 pd3dDevice,
  const D3DXVECTOR3* ppointDest,
  float alpha = 1.0f,
  float scale = 1.0f,
  float angleRad = 0.0f,
  const D3DXVECTOR2* pOffset = NULL,
  const RECT *pSourceRect = NULL
);

パラメータ

pd3dTexture
スプライトのソース イメージとして使用するサーフェスを示し、テクスチャが格納されているサーフェスの IDirectDrawSurface7 インターフェイスへのポインタ。これが NULL の場合、アプリケーションがテクスチャ ステージ 0 に対して IDirect3DDevice7::SetTexture を既に呼び出していると見なされる。
pd3dDevice
IDirect3DDevice7 インターフェイスへのポインタ。スプライトは、このデバイスに対してレンダリングされる。レンダリング状態はこのデバイスに対してセットアップされていると見なされる (「D3DXPrepareDeviceForSprite」を参照すること)。
ppointDest
D3DXVECTOR3 構造体へのポインタ。スプライトの注視点。このベクトルは、スプライトの中心をレンダリングする位置をスクリーン座標で示す。ベクトルの各コンポーネントは、スクリーン空間内になければならない。一般に、ベクトルの z コンポーネントは 0 に設定される。しかし、z バッファを使用しているアプリケーションは、背景から前景にレンダリングしないで、任意の値を指定することができる。
alpha
スプライトの不透明度を示し、スプライトに適用されるアルファ値。1.0 は全体的に不透明であり、0.0 は全体的に透明であることを意味する。ただし、アルファを使用する場合は、アーティファクト (人工物) がレンダリングされないようにするために、背景から前景へレンダリングすること。このアルファ値は、テクスチャ イメージ内に存在するアルファ (存在する場合) と組み合わせられる。
scale
レンダリングするイメージのサイズを指定し、ソース RECT に適用する一様のスケール。デフォルト値は 1.0 であり、スプライトをソースと同じ幅と高さでレンダリングする。
angleRad
RECT の中心を中心とした回転の角度で、スプライトの回転角度を示す。回転は、スプライトの中心を中心として適用される。それは、反時計回りにラジアン単位で指定する。度数からラジアンへ変換する方法については、「D3DXToRadian」を参照すること。
pOffset
回転の中心として使用するソース RECT の中心からのオフセットを定義した D3DXVECTOR2 構造体へのポインタ。このパラメータは、ppointDest パラメータと angleRad パラメータでスプライトの中心として処理されるスプライトの中心点からのオフセットを示す。
pSourceRect
ソース テクスチャの中でスプライトに使用する部分を示す RECT 構造体へのポインタ。このパラメータが NULL の場合、ソース イメージ全体がスプライトで使用される。一方、代わりにソース イメージの小矩形を指定できる。ソース テクスチャが Direct3DX を使用して作成されている場合、RECT 構造体はオリジナル イメージの座標で指定する。そのため、Direct3D カレント デバイスでイメージが機能するように Direct3DX により行われた伸張やスケーリングは必要ない。また、ミラーリングについては、この RECT 構造体の left、top パラメータと right、bottom パラメータを入れ替えるだけで簡単に指定できる。

戻り値

成功すれば、S_OK を返す。

失敗すれば、次いずれかの値を返す。

D3DXERR_NULLPOINTER
DDERR_INVALIDOBJECT
DDERR_INVALIDPARAMS

注意

C プログラマは、alphascaleangleRadpOffset、および pSourceRect パラメータでデフォルト値を使用でない。

D3DXDrawSpriteSimple 関数は、ソース イメージを 3D レンダリング デバイスにブリッドする。この関数は、pd3dTexture パラメータが NULL 以外の場合、最初のレンダリング ステージでそのパラメータを指定して IDirect3DDevice7::SetTexture を呼び出すだけである。

この関数は、スケーリング、回転、アルファ ブレンディング、ミラーリング、および配置をサポートしている。シャーリングや遠近法などより広い範囲のエフェクトについては、D3DXDrawSpriteTransform 関数を使用すること。

この関数は、D3DXPrepareDeviceForSprite がデバイスで呼び出された、または呼び出し元のアプリケーションが別の方法でレンダリング状態を適切に準備したと仮定している。

回転角度は、ラジアン単位で指定される。回転もスケーリングも、スプライトの中心を中心として適用される。この場合、スプライトの中心は、スプライトの幅と高さの半分に、オフセット パラメータを加えたものになる。スプライトの中心をイメージの中心とは違うものにしたい場合、オフセット パラメータを使用する。

レンダリング先の点は、スプライトの中心を置く位置を示す。2D レンダリングと 3D レンダリングを混合するような上級ユーザーは、それらの座標が完全に変換されていると見なされることを覚えておくこと (つまり、スクリーン空間で、ppointDest パラメータの z コンポーネントを適切に設定する必要がある)。一般に、上級ユーザーはもっと制御するため、代わりに D3DXDrawSprite3D 関数を使用する。

動作環境

  Windows NT/2000 : Windows 2000 が必要。
  Windows 95/98 : Windows 95 以上が必要。Windows 95 用に再配布可能な形で使用可能。
  バージョン : DirectX 7.0 が必要。
  ヘッダー : d3dxsprite.h で宣言。
  ライブラリ : d3dx.lib を使用。

参照

D3DXDrawSpriteTransformD3DXDrawSprite3DD3DXPrepareDeviceForSprite