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

IDXGIDevice1

COM
IID77db970f-6276-48ba-ba28-070143b4392c継承元IDXGIDevice自前メソッド開始 vtbl12

公式ドキュメント

IDXGIDevice1 インターフェースは、画像データを生成する DXGI オブジェクト向けの派生クラスを実装します。

解説(Remarks)

このインターフェースは Direct3D 12 デバイスではサポートされません。Direct3D 12 アプリケーションはスワップチェーンの管理を直接制御できるため、より優れたレイテンシー制御はアプリケーション側で処理する必要があります。必要に応じて、Waitable オブジェクト(DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT を参照)や IDXGISwapChain2::SetMaximumFrameLatency メソッドを利用できます。

このインターフェースは、Windows Vista および Windows Server 2008 に同梱された DXGI 1.0 ではサポートされません。DXGI 1.1 のサポートが必要であり、これは Windows 7、Windows Server 2008 R2、および Service Pack 2 (SP2) 適用済みの Windows Vista への更新プログラム(KB 971644)および Windows Server 2008(KB 971512)で利用できます。

IDXGIDevice1 インターフェースは、他の DXGI オブジェクトへのアクセスを必要とする DXGI オブジェクトが使用することを想定して設計されています。このインターフェースは、DXGI との通信に Direct3D を使用しないアプリケーションにとって有用です。

Direct3D のデバイス作成関数は Direct3D デバイスオブジェクトを返します。この Direct3D デバイスオブジェクトは IUnknown インターフェースを実装しています。この Direct3D デバイスオブジェクトに対して、デバイスに対応する IDXGIDevice1 インターフェースを照会できます。Direct3D デバイスの IDXGIDevice1 インターフェースを取得するには、次のコードを使用します。

IDXGIDevice1 * pDXGIDevice;
hr = g_pd3dDevice->QueryInterface(__uuidof(IDXGIDevice1), (void **)&pDXGIDevice);

Windows Phone 8: この API はサポートされています。

メソッド 2

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

vtbl 12 HRESULT SetMaximumFrameLatency(DWORD MaxLatency)

システムがレンダリングのためにキューに格納できるフレーム数を設定します。

MaxLatencyDWORDinドライバーがキューに格納できるバックバッファーフレームの最大数。値の既定は 3 ですが、1 から 16 までの範囲で指定できます。0 を指定すると、レイテンシーは既定値にリセットされます。マルチヘッドデバイスの場合、この値はヘッドごとに指定されます。

戻り値

型: HRESULT

成功した場合は S_OK を返します。そうでない場合、デバイスが削除されたときは DXGI_ERROR_DEVICE_REMOVED を返します。

解説(Remarks)

このメソッドは、Windows Vista および Windows Server 2008 に同梱された DXGI 1.0 ではサポートされません。DXGI 1.1 のサポートが必要であり、これは Windows 7、Windows Server 2008 R2、および Service Pack 2 (SP2) 適用済みの Windows Vista への更新プログラム(KB 971644)および Windows Server 2008(KB 971512)で利用できます。

フレームレイテンシーとは、レンダリングのために送信される前にキューへ格納できるフレーム数のことです。レイテンシーは、ユーザー入力への応答とレンダリングキュー内のフレームとの間で CPU がどのように選択するかを制御するためによく使用されます。ユーザー入力を伴わないアプリケーション(たとえば動画再生)では、3 フレームを超えるデータをキューに格納すると有益な場合がよくあります。

vtbl 13 HRESULT GetMaximumFrameLatency(DWORD* pMaxLatency)

システムがレンダリングのためにキューに格納できるフレーム数を取得します。

pMaxLatencyDWORD*outこの値には、レンダリングのためにキューに格納できるフレーム数が設定されます。値の既定は 3 ですが、1 から 16 までの範囲になります。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドは、Windows Vista および Windows Server 2008 に同梱された DXGI 1.0 ではサポートされません。DXGI 1.1 のサポートが必要であり、これは Windows 7、Windows Server 2008 R2、および Service Pack 2 (SP2) 適用済みの Windows Vista への更新プログラム(KB 971644)および Windows Server 2008(KB 971512)で利用できます。

フレームレイテンシーとは、レンダリングのために送信される前にキューへ格納できるフレーム数のことです。レイテンシーは、ユーザー入力への応答とレンダリングキュー内のフレームとの間で CPU がどのように選択するかを制御するためによく使用されます。ユーザー入力を伴わないアプリケーション(たとえば動画再生)では、3 フレームを超えるデータをキューに格納すると有益な場合がよくあります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDXGIDevice1 "{77DB970F-6276-48BA-BA28-070143B4392C}"
#usecom global IDXGIDevice1 IID_IDXGIDevice1 "{}"
#comfunc global IDXGIDevice1_SetMaximumFrameLatency  12 int
#comfunc global IDXGIDevice1_GetMaximumFrameLatency  13 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。