Win32 API 日本語リファレンス
ホームGraphics.Dxgi › IDXGISwapChain2

IDXGISwapChain2

COM
IIDa8be2ac4-199f-4946-b331-79599fb98de7継承元IDXGISwapChain1自前メソッド開始 vtbl29

公式ドキュメント

IDXGISwapChain1 を拡張し、スワップチェーンのバックバッファーのスケーリングや、より低遅延なスワップチェーンをサポートするメソッドを提供します。

解説(Remarks)

スワップチェーンは、 IDXGIFactory2::CreateSwapChainForHwndIDXGIFactory2::CreateSwapChainForCoreWindow、または IDXGIFactory2::CreateSwapChainForComposition を呼び出すことで作成できます。

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 29 HRESULT SetSourceSize(DWORD Width, DWORD Height)

スワップチェーンに使用するソース領域を設定します。

WidthDWORDinスワップチェーンに使用するソースの幅。この値は 0 より大きく、スワップチェーン全体の幅以下でなければなりません。
HeightDWORDinスワップチェーンに使用するソースの高さ。この値は 0 より大きく、スワップチェーン全体の高さ以下でなければなりません。

戻り値

このメソッドは次を返すことがあります。

vtbl 30 HRESULT GetSourceSize(DWORD* pWidth, DWORD* pHeight)

スワップチェーンに使用されているソース領域を取得します。

pWidthDWORD*outスワップチェーンのソース領域の現在の幅。この値は 1 からスワップチェーン全体の幅までの範囲を取ります。
pHeightDWORD*outスワップチェーンのソース領域の現在の高さ。この値は 1 からスワップチェーン全体の高さまでの範囲を取ります。

戻り値

このメソッドは、DXGI_ERROR のトピックで説明されているエラーコードを返すことがあります。

vtbl 31 HRESULT SetMaximumFrameLatency(DWORD MaxLatency)

スワップチェーンがレンダリングのためにキューに入れることを許可されるフレーム数を設定します。

MaxLatencyDWORDinスワップチェーンでキューに入れられるバックバッファーフレームの最大数。この値は既定で 1 です。

戻り値

成功した場合は S_OK を返します。それ以外の場合、デバイスが削除されたときは DXGI_ERROR_DEVICE_REMOVED を返します。

解説(Remarks)

このメソッドは、DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT を指定して作成されたスワップチェーンに対してのみ有効です。それ以外の場合、結果は DXGI_ERROR_INVALID_CALL になります。

vtbl 32 HRESULT GetMaximumFrameLatency(DWORD* pMaxLatency)

スワップチェーンがレンダリングのためにキューに入れることを許可されるフレーム数を取得します。

pMaxLatencyDWORD*outスワップチェーンでキューに入れられるバックバッファーフレームの最大数。この値は既定で 1 ですが、シーンの描画に 1 回の垂直リフレッシュ(通常は約 16ms)よりも長い時間がかかる場合は 2 に設定してください。

戻り値

成功した場合は S_OK を返します。それ以外の場合は、D3DERR 列挙型の次のメンバーのいずれかを返します。

vtbl 33 HANDLE GetFrameLatencyWaitableObject()

DXGI アダプターが新しいフレームの表示(プレゼント)を完了したときにシグナル状態になる待機可能なハンドルを返します。

戻り値

待機可能オブジェクトへのハンドル。スワップチェーンが DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT を指定して作成されていない場合は NULL。

解説(Remarks)

アプリケーションが IDXGISwapChain2::GetFrameLatencyWaitableObject によって返されたオブジェクトハンドルの使用を終えたら、CloseHandle 関数を使用してハンドルを閉じてください。

vtbl 34 HRESULT SetMatrixTransform(DXGI_MATRIX_3X2_F* pMatrix)

次回の表示(プレゼント)時にコンポジションスワップチェーンに適用される変換行列を設定します。

pMatrixDXGI_MATRIX_3X2_F*inスワップチェーンのスケーリングと平行移動に使用する変換行列。この関数は、IDXGIFactory2::CreateSwapChainForComposition によって作成されたコンポジションスワップチェーンでのみ使用できます。行列にはスケールと平行移動の成分のみが許可されます。

戻り値

SetMatrixTransform は次を返します。

vtbl 35 HRESULT GetMatrixTransform(DXGI_MATRIX_3X2_F* pMatrix)

次回の表示(プレゼント)時にコンポジションスワップチェーンに適用される変換行列を取得します。

pMatrixDXGI_MATRIX_3X2_F*out

[out]

スワップチェーンのスケーリングと平行移動に現在使用されている変換行列。

戻り値

GetMatrixTransform は次を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDXGISwapChain2 "{A8BE2AC4-199F-4946-B331-79599FB98DE7}"
#usecom global IDXGISwapChain2 IID_IDXGISwapChain2 "{}"
#comfunc global IDXGISwapChain2_SetSourceSize                  29 int,int
#comfunc global IDXGISwapChain2_GetSourceSize                  30 var,var
#comfunc global IDXGISwapChain2_SetMaximumFrameLatency         31 int
#comfunc global IDXGISwapChain2_GetMaximumFrameLatency         32 var
#comfunc global IDXGISwapChain2_GetFrameLatencyWaitableObject  33
#comfunc global IDXGISwapChain2_SetMatrixTransform             34 var
#comfunc global IDXGISwapChain2_GetMatrixTransform             35 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。