IDirect3DQuery9::GetData メソッド (d3d9helper.h)
クエリされたリソースをポーリングして、クエリの状態またはクエリ結果を取得します。 クエリの詳細については、「 クエリ (Direct3D 9)」を参照してください。
構文
HRESULT GetData(
[in, out] void *pData,
[in] DWORD dwSize,
[in] DWORD dwGetDataFlags
);
パラメーター
[in, out] pData
型: void*
クエリ データを含むバッファーへのポインター。 ユーザーは、これを割り当てる責任があります。 pData は、dwSize が 0 の場合にのみ NULL にすることができます 。
[in] dwSize
型: DWORD
pData 内のデータのバイト数。 dwSize を 0 に設定した場合は、このメソッドを使用して、リソースのクエリ状態をポーリングできます。 「解説」を参照してください。
[in] dwGetDataFlags
型: DWORD
クエリの種類を指定するデータ フラグ。 有効な値は 0 または D3DGETDATA_FLUSHです。 バッチクエリをドライバーにフラッシュしないようにするには 0 を使用し、D3DGETDATA_FLUSHを使用して先に進んでフラッシュします。 独自のバージョンの待機を記述しているアプリケーションの場合、ドライバーがフラッシュを受け取るまでクエリ結果は認識されません。
戻り値
型: HRESULT
戻り値の型は、クエリの状態を識別します ( 「クエリ (Direct3D 9)」を参照)。 メソッドは、クエリ データが使用可能な場合はS_OKを返し、使用できない場合はS_FALSEします。 これらは成功した戻り値と見なされます。 D3DGETDATA_FLUSHが使用されているときにメソッドが失敗した場合、戻り値をD3DERR_DEVICELOSTできます。
注釈
クエリの状態のポーリング中にデバイスが失われる可能性があります。 D3DGETDATA_FLUSHを指定すると、このメソッドは紛失したデバイスに応答してD3DERR_DEVICELOSTを返します。 これにより、(クエリに応答できない) デバイスが失われたために、アプリケーションでスレッドが無限にポーリングされるのを防ぐことができます。
GetData ( ... , 0 ) のみを呼び出すコードをアプリケーションで記述しないでください。GetData は最終的に時間の経過と同時に単独でS_OKを返すことを想定しています。 これは、アプリケーションが過去に GetData で FLUSH フラグを使用した場合でも当てはまります。 次に例を示します。
// Enables an infinite loop:
while( pQuery->GetData( ... , 0 ) == S_FALSE ) ;
// Still enables an infinite loop:
pQuery->GetData( ... , D3DGETDATA_FLUSH );
while( pQuery->GetData( ... , 0 ) == S_FALSE ) ;
// Does not enable an infinite loop because eventually the command
// buffer will fill up and that will cause a flush to occur.
while( pQuery->GetData( ..., 0 ) == S_FALSE ) {
pDevice->SetTexture(...);
pDevice->Draw(...);
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | Windows |
ヘッダー | d3d9helper.h (D3D9.h を含む) |
Library | D3D9.lib |