Platform SDK: DirectX

D3DXPrepareDeviceForSprite

D3DXPrepareDeviceForSprite 関数は、デバイスを別のスプライト ヘルパー関数で使用できるように準備するため、多数のレンダリング状態を設定する。特に、アルファ ブレンディングと双一次フィルタリングをセットアップする。パラメータは、z バッファを有効にするかどうかを制御する。

HRESULT D3DXPrepareDeviceForSprite(
  LPDIRECT3DDEVICE7 pd3dDevice,
  BOOL ZEnable = FALSE
);

パラメータ

pd3dDevice
Direct3DX スプライト サービスで使用するために準備する Direct3D デバイスの IDirect3DDevice7 インターフェイスへのポインタ。
ZEnable
スプライトにより z バッファ サーフェスをチェックし、それをレンダリングの一部として更新するかどうかを示すフラグ。通常のアプリケーションでスプライトは背景から前景へとレンダリングされるので、デフォルト値は FALSE である。2D と 3D を混合するような高度なアプリケーションで、この値を TRUE に設定する。ZEnable が FALSE の場合、またはアルファ ブレンディングを使用している場合、スプライトは背景から前景へとレンダリングする必要がある。

戻り値

成功すれば、S_OK を返す。失敗すれば、D3DXERR_NULLPOINTER を返す。

注意

C プログラマは、ZEnable パラメータでデフォルト値を使用できない。

この関数を呼び出して、D3DXDrawSpriteSimple 関数と D3DXDrawSprite3D 関数が適切に機能するために必要なすべてのレンダリング状態をセットアップする。ただし上級ユーザーは、デバイスにセットアップされたレンダリング状態とテクスチャ状態を D3DXDrawSpriteSimple 関数と D3DXDrawSprite3D 関数で使用する場合に、この関数を呼び出さないこともある。

メモ  D3DXPrepareDeviceForSprite 関数は、レンダリング状態を修正するが、フレームごとに頻繁に呼び出されると 3D ハードウェアのパフォーマンスに悪影響を与える可能性がある。レンダリング状態が (D3DXDrawSpriteSimple 関数や D3DXDrawSprite3D 関数を呼び出す以外の方法で) 変更された場合、D3DXDrawSpriteSimple 関数や D3DXDrawSprite3D 関数を呼び出す前にこの関数を再度呼び出す必要がある。

D3DXPrepareDeviceForSprite 関数は、レンダリングの最初のテクスチャ ステージを修正し、デバイス全体のレンダリング状態をいくつか修正する。次に、そのリストを示す。

    SetTextureStageState(0, D3DTSS_COLORARG1,         D3DTA_TEXTURE);
    SetTextureStageState(0, D3DTSS_COLOROP,           D3DTOP_SELECTARG1);
    SetTextureStageState(0, D3DTSS_ALPHAARG1,         D3DTA_TEXTURE);
    SetTextureStageState(0, D3DTSS_ALPHAARG2,         D3DTA_DIFFUSE);
    SetTextureStageState(0, D3DTSS_ALPHAOP,           D3DTOP_MODULATE);
    SetTextureStageState(0, D3DTSS_MINFILTER,         D3DTFN_LINEAR);
    SetTextureStageState(0, D3DTSS_MAGFILTER,         D3DTFG_LINEAR);
 
    SetRenderState(D3DRENDERSTATE_SRCBLEND,           D3DBLEND_SRCALPHA);
    SetRenderState(D3DRENDERSTATE_DESTBLEND,          D3DBLEND_INVSRCALPHA);
    SetRenderState(D3DRENDERSTATE_ALPHABLENDENABLE,   TRUE);

ZEnable パラメータの値に基づいて、次のいずれかが呼び出される。

    SetRenderState(D3DRENDERSTATE_ZENABLE,            FALSE);

または

    SetRenderState(D3DRENDERSTATE_ZENABLE,            TRUE);

動作環境

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