Share via


D3D11_QUERY

クエリの種類です。

typedef enum D3D11_QUERY
{
    D3D11_QUERY_EVENT = 0,
    D3D11_QUERY_OCCLUSION = ( D3D11_QUERY_EVENT + 1 ),
    D3D11_QUERY_TIMESTAMP = ( D3D11_QUERY_OCCLUSION + 1 ),
    D3D11_QUERY_TIMESTAMP_DISJOINT = ( D3D11_QUERY_TIMESTAMP + 1 ),
    D3D11_QUERY_PIPELINE_STATISTICS = ( D3D11_QUERY_TIMESTAMP_DISJOINT + 1 ),
    D3D11_QUERY_OCCLUSION_PREDICATE = ( D3D11_QUERY_PIPELINE_STATISTICS + 1 ),
    D3D11_QUERY_SO_STATISTICS = ( D3D11_QUERY_OCCLUSION_PREDICATE + 1 ),
    D3D11_QUERY_SO_OVERFLOW_PREDICATE = ( D3D11_QUERY_SO_STATISTICS + 1 ),
    D3D11_QUERY_SO_STATISTICS_STREAM0 = ( D3D11_QUERY_SO_OVERFLOW_PREDICATE + 1 ),
    D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 = ( D3D11_QUERY_SO_STATISTICS_STREAM0 + 1 ),
    D3D11_QUERY_SO_STATISTICS_STREAM1 = ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 + 1 ),
    D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 = ( D3D11_QUERY_SO_STATISTICS_STREAM1 + 1 ),
    D3D11_QUERY_SO_STATISTICS_STREAM2 = ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 + 1 ),
    D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 = ( D3D11_QUERY_SO_STATISTICS_STREAM2 + 1 ),
    D3D11_QUERY_SO_STATISTICS_STREAM3 = ( D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 + 1 ),
    D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 = ( D3D11_QUERY_SO_STATISTICS_STREAM3 + 1 ),
} D3D11_QUERY;

定数

  • D3D11_QUERY_EVENT
    GPU がコマンドの処理を終了したかどうかを判別します。GPU がコマンドの処理を終了すると、ID3D11DeviceContext::GetData は S_OK を返し、pData は TRUE の値をもつ BOOL を指し示します。この種類のクエリを使用する場合、ID3D11DeviceContext::Begin は無効になります。
  • D3D11_QUERY_OCCLUSION
    ID3D11DeviceContext::Begin および ID3D11DeviceContext::End の間で深度テストおよびステンシル テストに合格したサンプル数を取得します。ID3D11DeviceContext::GetData は UINT64 を返します。深度テストまたはステンシル テストが無効になっている場合、これらのテストはいずれも合格としてカウントされます。
  • D3D11_QUERY_TIMESTAMP
    タイムスタンプ値を取得します。これは、ID3D11DeviceContext::GetData が返す UINT64 の値です。この種類のクエリは、2 つのタイムスタンプ クエリが D3D11_QUERY_TIMESTAMP_DISJOINT クエリの途中で実行される場合のみ効果的です。2 つのタイムスタンプの差を利用して、経過したティック数を判別できます。また、その差が信頼できる値かどうか、およびティック数を秒数に変換する方法を示す値が設定されているかどうかが、D3D11_QUERY_TIMESTAMP_DISJOINT クエリによって判別されます。「D3D11_QUERY_DATA_TIMESTAMP_DISJOINT」を参照してください。この種類のクエリを使用する場合、ID3D11DeviceContext::Begin は無効になります。
  • D3D11_QUERY_TIMESTAMP_DISJOINT
    D3D11_QUERY_TIMESTAMP が信頼できる値を返しているかどうかを判別します。また、経過したティック数を秒数に変換できるようにプロセッサの周波数が返されます。ID3D11DeviceContext::GetDataD3D11_QUERY_DATA_TIMESTAMP_DISJOINT を返します。この種類のクエリの呼び出しは、フレームごとに 1 回以内としてください。
  • D3D11_QUERY_PIPELINE_STATISTICS
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でのピクセル シェーダーの呼び出し回数などのパイプライン統計情報を取得します。ID3D11DeviceContext::GetDataD3D11_QUERY_DATA_PIPELINE_STATISTICS を返します。
  • D3D11_QUERY_OCCLUSION_PREDICATE
    D3D11_QUERY_OCCLUSION と似ていますが、任意のサンプルが深度テストおよびステンシル テストに合格したかどうかを示す BOOL が ID3D11DeviceContext::GetData によって返される点が異なります。TRUE は少なくとも 1 つのサンプルが合格したことを示し、FALSE は合格したサンプルがないことを示します。
  • D3D11_QUERY_SO_STATISTICS
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でストリーム出力されたプリミティブ数などのストリーム出力統計情報を取得します。ID3D11DeviceContext::GetDataD3D11_QUERY_DATA_SO_STATISTICS 構造体を返します。
  • D3D11_QUERY_SO_OVERFLOW_PREDICATE
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でオーバーフローしたストリーム出力バッファーがあるかどうかを判別します。ID3D11DeviceContext::GetData は BOOL を返します。TRUE はオーバーフローが発生したことを示し、FALSE はオーバーフローがないことを示します。ストリーム出力によって複数のバッファーに書き込まれ、バッファーの 1 つがオーバーフローした場合、すべての出力バッファーへの書き込みが停止します。Direct3D でオーバーフローが検出されると、それ以上の動作が阻止され、メモリーは破壊されません。このプレディケーションを SO_STATISTICS クエリと併用して、オーバーフローが発生したときに、オーバーフローを防ぐために必要なメモリー容量を SO_STATISTICS クエリからアプリケーションに通知されるようにすることができます。
  • D3D11_QUERY_SO_STATISTICS_STREAM0
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でストリーム出力されたプリミティブ数などの、ストリーム 0 のストリーム出力統計情報を取得します。ID3D11DeviceContext::GetDataD3D11_QUERY_DATA_SO_STATISTICS 構造体を返します。
  • D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でオーバーフローしたストリーム 0 出力バッファーがあるかどうかを判別します。ID3D11DeviceContext::GetData が返す BOOL 値が TRUE の場合はオーバーフローが発生したことを示し、FALSE の場合はオーバーフローが発生しなかったことを示します。ストリーム出力によって複数のバッファーに書き込まれ、バッファーの 1 つがオーバーフローした場合、すべての出力バッファーへの書き込みが停止します。Direct3D でオーバーフローが検出されると、それ以上の動作が阻止され、メモリーは破壊されません。このプレディケーションを SO_STATISTICS クエリと併用して、オーバーフローが発生したときに、オーバーフローを防ぐために必要なメモリー容量を SO_STATISTICS クエリからアプリケーションに通知されるようにすることができます。
  • D3D11_QUERY_SO_STATISTICS_STREAM1
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でストリーム出力されたプリミティブ数などの、ストリーム 1 のストリーム出力統計情報を取得します。ID3D11DeviceContext::GetDataD3D11_QUERY_DATA_SO_STATISTICS 構造体を返します。
  • D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でオーバーフローしたストリーム 1 出力バッファーがあるかどうかを判別します。ID3D11DeviceContext::GetData が返す BOOL 値が TRUE の場合はオーバーフローが発生したことを示し、FALSE の場合はオーバーフローが発生しなかったことを示します。ストリーム出力によって複数のバッファーに書き込まれ、バッファーの 1 つがオーバーフローした場合、すべての出力バッファーへの書き込みが停止します。Direct3D でオーバーフローが検出されると、それ以上の動作が阻止され、メモリーは破壊されません。このプレディケーションを SO_STATISTICS クエリと併用して、オーバーフローが発生したときに、オーバーフローを防ぐために必要なメモリー容量を SO_STATISTICS クエリからアプリケーションに通知されるようにすることができます。
  • D3D11_QUERY_SO_STATISTICS_STREAM2
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でストリーム出力されたプリミティブ数などの、ストリーム 2 のストリーム出力統計情報を取得します。ID3D11DeviceContext::GetDataD3D11_QUERY_DATA_SO_STATISTICS 構造体を返します。
  • D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でオーバーフローしたストリーム 2 出力バッファーがあるかどうかを判別します。ID3D11DeviceContext::GetData が返す BOOL 値が TRUE の場合はオーバーフローが発生したことを示し、FALSE の場合はオーバーフローが発生しなかったことを示します。ストリーム出力によって複数のバッファーに書き込まれ、バッファーの 1 つがオーバーフローした場合、すべての出力バッファーへの書き込みが停止します。Direct3D でオーバーフローが検出されると、それ以上の動作が阻止され、メモリーは破壊されません。このプレディケーションを SO_STATISTICS クエリと併用して、オーバーフローが発生したときに、オーバーフローを防ぐために必要なメモリー容量を SO_STATISTICS クエリからアプリケーションに通知されるようにすることができます。
  • D3D11_QUERY_SO_STATISTICS_STREAM3
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でストリーム出力されたプリミティブ数などの、ストリーム 3 のストリーム出力統計情報を取得します。ID3D11DeviceContext::GetDataD3D11_QUERY_DATA_SO_STATISTICS 構造体を返します。
  • D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3
    ID3D11DeviceContext::BeginID3D11DeviceContext::End の間でオーバーフローしたストリーム 3 出力バッファーがあるかどうかを判別します。ID3D11DeviceContext::GetData が返す BOOL 値が TRUE の場合はオーバーフローが発生したことを示し、FALSE の場合はオーバーフローが発生しなかったことを示します。ストリーム出力によって複数のバッファーに書き込まれ、バッファーの 1 つがオーバーフローした場合、すべての出力バッファーへの書き込みが停止します。Direct3D でオーバーフローが検出されると、それ以上の動作が阻止され、メモリーは破壊されません。このプレディケーションを SO_STATISTICS クエリと併用して、オーバーフローが発生したときに、オーバーフローを防ぐために必要なメモリー容量を SO_STATISTICS クエリからアプリケーションに通知されるようにすることができます。

解説 

ID3D11Device::CreateQuery でクエリを作成します。

要件

ヘッダー: D3D11.h 宣言

ライブラリ: D3D11.lib 内容

関連項目

コア列挙型