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

IDXGISwapChainMedia

COM
IIDdd95b90b-f05f-4f6a-bd65-25bfb264bd84継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

このスワップチェーンインターフェイスにより、デスクトップメディアアプリケーションは特定のリフレッシュレートへのシームレスな変更を要求できます。

解説(Remarks)

カスタムフレームレートへのシームレスな変更は、内蔵パネルでのみ実行できます。カスタムフレームレートを外部ディスプレイに適用することはできません。DXGI 出力アダプターが外部ディスプレイに接続されている場合、CheckPresentDurationSupport は上限と下限として (0, 0) を返し、デバイスがシームレスなリフレッシュレート変更をサポートしていないことを示します。

カスタムリフレッシュレートは、動的なフレームレートを持つビデオを表示する際に使用できます。ただし、リフレッシュレートの変更はユーザーに気づかれないように保つ必要があります。リフレッシュレートの遷移を気づかれないように保つためのベストプラクティスは、アプリがそのレートで少なくとも 5 秒間表示(プレゼント)できると判断した場合にのみカスタムフレームレートを設定することです。

メソッド 3

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

vtbl 3 HRESULT GetFrameStatisticsMedia(DXGI_FRAME_STATISTICS_MEDIA* pStats)

カスタムリフレッシュレートが現在システムによって承認されているかどうかを示す DXGI_FRAME_STATISTICS_MEDIA 構造体をシステムに問い合わせます。

pStatsDXGI_FRAME_STATISTICS_MEDIA*outシステムが現在カスタムリフレッシュレートの要求を承認しているかどうかを示す DXGI_FRAME_STATISTICS_MEDIA 構造体です。

戻り値

このメソッドは、成功した場合は S_OK を返し、失敗した場合は DXGI エラーコードを返します。

vtbl 4 HRESULT SetPresentDuration(DWORD Duration)

カスタムの表示(プレゼント)継続時間(カスタムリフレッシュレート)を要求します。

DurationDWORDinカスタムの表示(プレゼント)継続時間で、100 ナノ秒単位で指定します。

戻り値

このメソッドは、成功した場合は S_OK を返し、失敗した場合は DXGI エラーコードを返します。

vtbl 5 HRESULT CheckPresentDurationSupport(DWORD DesiredPresentDuration, DWORD* pClosestSmallerPresentDuration, DWORD* pClosestLargerPresentDuration)

カスタムリフレッシュレートに対応する、サポートされているフレーム表示(プレゼント)継続時間をグラフィックスドライバーに問い合わせます。

DesiredPresentDurationDWORDin確認するフレーム継続時間を示します。この値は、目的のリフレッシュレートでの 1 フレームの継続時間であり、100 ナノ秒単位で指定します。たとえば、60 Hz のリフレッシュレートのサポートを確認するには、このフィールドに 167777 を設定します。
pClosestSmallerPresentDurationDWORD*out要求された値より小さい、サポートされている最も近いフレーム表示(プレゼント)継続時間が設定される変数です。デバイスがそれより小さい継続時間をサポートしていない場合はゼロが設定されます。
pClosestLargerPresentDurationDWORD*out要求された値より大きい、サポートされている最も近いフレーム表示(プレゼント)継続時間が設定される変数です。デバイスがそれより大きい継続時間をサポートしていない場合はゼロが設定されます。

戻り値

このメソッドは、成功した場合は S_OK を返し、失敗した場合は DXGI エラーコードを返します。

解説(Remarks)

DXGI 出力アダプターがカスタムリフレッシュレートをサポートしていない場合(たとえば外部ディスプレイ)、ディスプレイドライバーは上限と下限を (0, 0) に設定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDXGISwapChainMedia "{DD95B90B-F05F-4F6A-BD65-25BFB264BD84}"
#usecom global IDXGISwapChainMedia IID_IDXGISwapChainMedia "{}"
#comfunc global IDXGISwapChainMedia_GetFrameStatisticsMedia      3 var
#comfunc global IDXGISwapChainMedia_SetPresentDuration           4 int
#comfunc global IDXGISwapChainMedia_CheckPresentDurationSupport  5 int,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。