IDXGISwapChain::ResizeBuffers メソッド (dxgi.h)

スワップ チェーンのバック バッファー サイズ、形式、バッファー数を変更します。 これは、アプリケーション ウィンドウのサイズを変更するときに呼び出す必要があります。

構文

HRESULT ResizeBuffers(
  UINT        BufferCount,
  UINT        Width,
  UINT        Height,
  DXGI_FORMAT NewFormat,
  UINT        SwapChainFlags
);

パラメーター

BufferCount

型: UINT

スワップ チェーン内のバッファーの数 (すべてのバック バッファーとフロント バッファーを含む)。 この数は、スワップ チェーンを作成したバッファーの数とは異なる場合があります。 この数値を DXGI_MAX_SWAP_CHAIN_BUFFERSより大きくすることはできません。 スワップ チェーン内のバッファーの既存の数を保持するには、この数を 0 に設定します。 フリップ プレゼンテーション モデルには、2 つ未満のバッファーを指定することはできません。

Width

型: UINT

バック バッファーの新しい幅。 ゼロを指定した場合、DXGI はターゲット ウィンドウのクライアント領域の幅を使用します。 IDXGIFactory2::CreateSwapChainForComposition メソッドを呼び出してコンポジション サーフェスのスワップ チェーンを作成した場合、幅をゼロとして指定することはできません。

Height

型: UINT

バック バッファーの新しい高さ。 ゼロを指定した場合、DXGI はターゲット ウィンドウのクライアント領域の高さを使用します。 IDXGIFactory2::CreateSwapChainForComposition メソッドを呼び出してコンポジション サーフェスのスワップ チェーンを作成した場合、高さをゼロとして指定することはできません。

NewFormat

種類: DXGI_FORMAT

バック バッファーの新しい形式の DXGI_FORMAT型指定された値。 バック バッファーの既存 形式を保持するには、この値を DXGI_FORMAT_UNKNOWN に設定します。 フリップ プレゼンテーション モデルでは、ビット ブロック転送 (bitblt) モデルよりも制限された形式のセットがサポートされています。

SwapChainFlags

型: UINT

ビットごとの OR 演算を使用して結合される DXGI_SWAP_CHAIN_FLAG型指定された値の組み合わせ。 結果の値は、スワップ チェーン動作のオプションを指定します。

戻り値

型: HRESULT

成功した場合はS_OKを返します。それ以外の場合はエラー コード。 エラー コードの一覧については、「 DXGI_ERROR」を参照してください。

解説

バック バッファーへの未処理の参照をすべて解放しない限り、スワップ チェーンのサイズを変更することはできません。 ResizeBuffers を成功させるには、バック バッファー上のすべての直接参照と間接参照を解放する必要があります。

直接参照は、リソースで AddRef を呼び出した後、アプリケーションによって保持されます。

間接参照は、リソースへのビュー、リソースのビューをデバイス コンテキストにバインドする、リソースを使用したコマンド リスト、そのリソースへのビューを使用したコマンド リスト、リソースを使用した別のコマンド リストを実行したコマンド リストなどによって保持されます。

ResizeBuffers を呼び出す前に、リソース、リソースへのビュー、およびリソースまたはビューを使用するコマンド リストに対するすべての参照 (適切な数のリリース呼び出しを呼び出すことによって) をアプリケーションが解放し、リソースとビューの両方がデバイス コンテキストにバインドされていないことを確認します。 ID3D11DeviceContext::ClearState を使用して、すべての参照が確実に解放されるようにすることができます。 ビューが遅延コンテキストにバインドされている場合は、部分的にビルドされたコマンド リストも破棄する必要があります (コマンド リストで ID3D11DeviceContext::ClearStateID3D11DeviceContext::FinishCommandList、Release を呼び出します)。 ResizeBuffers を呼び出した後は、IDXGISwapChain::GetBuffer を使用してインターフェイスのクエリを再実行できます。

DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLEで作成したスワップ チェーンの場合、ResizeBuffers を呼び出す前に、スワップ チェーンのバックバッファー サーフェイスで IDXGISurface1::ReleaseDC を呼び出して、未処理の GDI デバイス コンテキスト (DC) が開かないようにします。

クライアント ウィンドウのサイズが変更されたとき (つまり、アプリケーションがWM_SIZE メッセージを受信する場合) には、 ResizeBuffers を呼び出することをお勧めします。

Windows 8 と Windows 7 の IDXGISwapChain::ResizeBuffers の唯一の違いは、 DXGI_SWAP_EFFECT_FLIP_SEQUENTIALまたはDXGI_SWAP_EFFECT_FLIP_DISCARD 値セットを使用して作成したフリップ プレゼンテーション モデルスワップ チェーンです。 Windows 8 では、全画面表示モードとウィンドウ モードの切り替えを実現するには、 ResizeBuffers を呼び出す必要があります。それ以外の場合、 IDXGISwapChain::P resent メソッドの次の呼び出しは失敗します。

要件

   
対象プラットフォーム Windows
ヘッダー dxgi.h
Library DXGI.lib

関連項目

IDXGISwapChain