IDXGISwapChain_ResizeBuffers

スワップチェーンのバックバッファサイズ、フォーマット、バッファ数を変更する。これはアプリケーションウィンドウがリサイズされたときに呼び出すべきである。

IDXGISwapChain_ResizeBuffers this, BufferCount, Width, Height, NewFormat, SwapChainFlags

this : [comobj] IDXGISwapChain インターフェースの COM オブジェクト変数
BufferCount : [int] 型: UINT スワップチェーン内のバッファ数 (すべてのバックバッファとフロントバッファを含む)。この数は、スワップチェーンを作成したときのバッファ数とは異なる場合がある。この数は DXGI_MAX_SWAP_CHAIN_BUFFERS を超えることはできない。スワップチェーン内の既存のバッファ数を維持するには、この数を 0 に設定する。フリッププレゼンテーションモデルでは 2 つ未満のバッファを指定することはできない。
Width : [int] 型: UINT バックバッファの新しい幅。0 を指定すると、DXGI はターゲットウィンドウのクライアント領域の幅を使用する。コンポジションサーフェス用のスワップチェーンを作成するために IDXGIFactory2::CreateSwapChainForComposition メソッドを呼び出した場合、幅を 0 として指定することはできない。
Height : [int] 型: UINT バックバッファの新しい高さ。0 を指定すると、DXGI はターゲットウィンドウのクライアント領域の高さを使用する。コンポジションサーフェス用のスワップチェーンを作成するために IDXGIFactory2::CreateSwapChainForComposition メソッドを呼び出した場合、高さを 0 として指定することはできない。
NewFormat : [int] 型: DXGI_FORMAT バックバッファの新しいフォーマット用の DXGI_FORMAT 型の値。バックバッファの既存のフォーマットを維持するには、この値を DXGI_FORMAT_UNKNOWN に設定する。フリッププレゼンテーションモデルは、ビットブロック転送 (bitblt) モデルよりも制限されたフォーマットセットをサポートする。
SwapChainFlags : [int] 型: UINT ビット単位の OR 演算で組み合わされる DXGI_SWAP_CHAIN_FLAG 型の値の組み合わせ。結果の値はスワップチェーンの動作のオプションを指定する。

(プラグイン / モジュール : com_misc.dll)

解説

スワップチェーンのバックバッファサイズ、フォーマット、バッファ数を変更する。これはアプリケーションウィンドウがリサイズされたときに呼び出すべきである。

[戻り値]
型: HRESULT 成功した場合は S_OK を、それ以外の場合はエラーコードを返す。エラーコードのリストについては
DXGI_ERROR を参照。

[備考]
バックバッファに対する未解決のすべての参照を解放しない限り、スワップチェーンのサイズを変更することはできない。ResizeBuffers
が成功するためには、バックバッファに対するすべての直接および間接的な参照を解放する必要がある。
直接参照は、リソースに対して AddRef を呼び出した後にアプリケーションが保持する。

間接参照は、リソースのビュー、リソースのビューをデバイスコンテキストにバインドすること、リソースを使用したコマンドリスト、そのリソースのビューを使用したコマンドリスト、リソースを使用した別のコマンドリストを実行したコマンドリストなどが保持する。
ResizeBuffers
を呼び出す前に、アプリケーションがリソース、リソースに対するビュー、リソースまたはビューを使用するコマンドリストに対するすべての参照を解放し
(適切な回数の Release
を呼び出して)、リソースもビューもデバイスコンテキストにバインドされていないことを確認すること。すべての参照が解放されたことを確認するために
ID3D11DeviceContext::ClearState
を使用できる。ビューが遅延コンテキストにバインドされている場合、部分的に構築されたコマンドリストも破棄する必要がある
(ID3D11DeviceContext::ClearState、続いて
ID3D11DeviceContext::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::Present メソッドの呼び出しが失敗する。

情報

プラグイン / モジュールcom_misc.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_com_misc_gen2.hs