IDXGISwapChain::ResizeBuffers
スワップ チェーンのバック バッファー サイズ、フォーマット、およびバッファー数を変更します。アプリケーション ウィンドウのサイズが変更されたときに呼び出す必要があります。
HRESULT
ResizeBuffers(
UINT BufferCount,
UINT Width,
UINT Height,
DXGI_FORMAT NewFormat,
UINT SwapChainFlags
);
パラメータ
- BufferCount
スワップ チェーンのバッファー数 (すべてのバック バッファーとフロント バッファーを含みます)。この値は、スワップ チェーンの作成に使用されたバッファー数と異なる場合があります。 - Width
バック バッファーの新しい幅。0 が指定された場合、ターゲット ウィンドウのクライアント領域の幅が使用されます。 - Height
バック バッファーの新しい高さ。0 が指定された場合、ターゲット ウィンドウのクライアント領域の高さが使用されます。 - NewFormat
バック バッファーの新しいフォーマット。「DXGI_FORMAT」を参照してください。 - SwapChainFlags
スワップ チェーンの機能を示すフラグ。「DXGI_SWAP_CHAIN_FLAG」を参照してください。
戻り値
次の DXGI_ERROR のいずれかを返します。
解説
スワップ チェーンのバック バッファーに対する未処理の参照をすべて解放しないと、そのスワップ チェーンのサイズを変更できません。ResizeBuffers が成功するには、このバック バッファーに対するアプリケーションからの直接および間接の参照をすべて解放する必要があります。
直接参照は、リソースに対する AddRef の呼び出しの後、アプリケーションで保持されています。
間接参照はリソースへのビューで保持され、デバイス コンテキスト、そのリソースを使用したコマンド リスト、そのリソースへのビューを使用したコマンド リスト、そのリソースを使用した他のコマンド リストを実行したコマンド リストなどに、そのリソースのビューがバインドされています。
ResizeBuffers を呼び出す前に、目的のリソースに対するすべての参照を (適切な回数で Release を呼び出して) アプリケーションで解放していることを確認します。また、そのリソースへのすべてのビューへの参照、そのようなビューとリソースを使用するすべてのコマンド リストへの参照も同様に解放していることを確認します。さらに、そのリソースとなんらかのビューがデバイス コンテキストにバインドされていないことも確認しておく必要があります。ClearState を使用すると、これらを確認できます。遅延コンテキストにバインドされたビューがある場合は、部分的に作成されているコマンド リストを同様に破棄する必要があります (破棄するには、そのコマンド リストに対して ClearState、FinishCommandList、Release を順番に呼び出します)。アプリケーションでは、IDXGISwapChain::GetBuffer を通じて ResizeBuffers を呼び出すことでインターフェイスを再クエリできます。
クライアント ウィンドウのサイズが変更された場合は、このメソッドを必ず呼び出す必要があります。アプリケーションが WM_SIZE メッセージを受け取った場合は、この API を呼び出すことをお勧めします。
要件
ヘッダー: DXGI.h 宣言
ライブラリ: DXGI.lib 内容