Microsoft DirectX 8.0 (C++)

IDirect3DDevice8::SetRenderTarget

デバイスに新しいカラー バッファと深度バッファの一方または両方を設定する。

HRESULT SetRenderTarget(
  IDirect3DSurface8* pRenderTarget,
  IDirect3DSurface8* pNewZStencil
);

パラメータ

pRenderTarget
[in] 新しいカラー バッファへのポインタ。NULL の場合は、既存のカラー バッファがそのまま使われる。このパラメータが NULL でない場合は、新しいレンダリング ターゲットの参照カウントがインクリメントされる。デバイスには、常に、カラー バッファが関連付けられていなければならない。

新しいレンダリング ターゲットのサーフェスには、少なくとも D3DUSAGE_RENDERTARGET が指定されていなければならない。

pNewZStencil
[in] 新しい深度ステンシル バッファへのポインタ。既存の深度ステンシル バッファがある場合は、そのバッファが解放される。このパラメータが NULL でない場合は、新しい深度ステンシル バッファ サーフェスの参照カウントがインクリメントされる。IDirect3DDevice8::GetDepthStencilSurfaceppZStencilSurface パラメータを渡すと、深度バッファを変更しないでレンダリング ターゲットを変更できる。

新しい深度ステンシル サーフェスには、少なくとも D3DUSAGE_DEPTHSTENCIL と D3DPOOL_DEFAULT が指定されていなければならない。

戻り値

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

pRenderTarget または pNewZStencil が NULL 以外で無効な値の場合、あるいは新しい深度バッファが新しいカラー バッファまたは引き続き使われるカラー バッファより小さい場合は、D3DERR_INVALIDCALL を返す。

注意

このメソッドを使ってカラー バッファと深度ステンシル サーフェスを同じデバイスに関連付けることを、両者をペアにするという。

デバイスは、SetRenderTarget に NULL 以外のサーフェスが渡されるたびに、AddRef を呼び出す。その後、デバイスは以前に設定されているカラー バッファに対して Release を呼び出す。

SetRenderTarget を呼び出して以前の深度ステンシル サーフェスとデバイスの関連を切断した後でも、前の深度ステンシル サーフェスのコンテンツは保持される。そのサーフェスをデバイスと再び関連付けると、新しい深度ステンシル サーフェスとペアにされているカラー バッファのサイズとフォーマットが、深度ステンシル サーフェスと最後にペアになっていたカラー バッファと同じならば、サーフェスのコンテンツは変更されない。

このメソッドを呼び出すと、デバイスの現在のビューポートは、現在のレンダリング ターゲットのサイズにリセットされる。この処理は、Z バッファだけが変更されるかどうかに関係なく行われる。

動作環境

  ヘッダー : d3d8.h で宣言。
  インポート ライブラリ : D3d8.lib を使用。

参照

IDirect3DDevice8::CreateDepthStencilSurfaceIDirect3DDevice8::GetDepthStencilSurface