私は現在、ARB_occlusion_query 拡張機能を利用しているプロジェクトに取り組んでいます。拡張機能を適切に登録し、クエリを生成できます。次にクエリを開始し、レンダリング後に EndQuery 関数を呼び出しますが、これにより「無効な列挙型」のエラーが発生するようです。ここでスペックを確認しました: http://www.opengl.org/registry/specs/ARB/occlusion_query.txt
次のように EndQueries を呼び出しています。
glEndQuery( GL_SAMPLES_PASSED_ARB );
そして、これはすべて有効に見えますが、「無効な列挙型」というエラーコード、エラーコード1280が表示され続けます.
エラーが他の場所から発生していないことを確認するために、すべての OpenGL 呼び出しにエラー チェックを追加しており、このセクションに分離しました。次のようにクエリを生成します。
glGenQueries( size, (GLuint*)m_QueryID);
サイズは (今のところ) ハードコーディングされた値 10 で、m_QueryID はサイズが 10 の unsigned int 配列です。
問題が発生しているように見える唯一の場所は、glEndQuery 呼び出しです。代わりに「無効な列挙型」が返されます。結果の取得、クエリの開始、最終的な削除など、他のすべての呼び出しはすべて問題ありません。
私のループは次のとおりです。
glBeginQuery( GL_SAMPLES_PASSED_ARB, m_QueryID[0] );
*render some models here*
glEndQuery( GL_SAMPLES_PASSED_ARB );
その後、結果が得られますが、glEndQuery 呼び出しでエラーが発生したため、現時点では何もしていません。
そして、speq のエラー コードによると、次のように表示されます。
target が GL_SAMPLES_PASSED でない場合、GL_INVALID_ENUM が生成されます。
つまり、そこに GL_SAMPLES_PASSED を渡していないということです。私はARBなしで試してみましたが、もちろん変更はありません.同じことが無効な列挙子について不平を言っています.