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

こちらもご覧ください

IDirect3DQuery9