1

2 番目のオブジェクトの描画中にクエリを実行できるように、2 つの別個のオブジェクトを描画したいと考えています。描画コードは次のようになります。

glDrawElements(GL_TRIANGLES,...);  // draw first object

glBeginQuery(GL_SAMPLES_PASSED, queries[0]);

glDrawElements(GL_TRIANGLES,...);  // draw second object

glEndQuery(GL_SAMPLES_PASSED);

glGetQueryObjectiv(queries[0], GL_QUERY_RESULT, &result);

return restult;

glDraw*()ほとんどの OpenGL チュートリアルは、1 つのコマンドを超えることはありません。このサイトからわかるように、2 つの頂点配列オブジェクトが必要ですが、このサイトでは、個別のオブジェクトのバッファ データを設定する方法について説明していません。簡単にするために、オブジェクトをそれぞれ単一の三角形にしたいとしましょう。

Triangle1:
vertex1: -0.5, 0.0, 0.0
vertex2: -0.5, 0.5, 0.0
vertex3:  0.0, 0.0, 0.0

Triangle2:
vertex1: 0.0, 0.0, 0.0
vertex2: 0.5, 0.5, 0.0
vertex3: 0.5, 0.0, 0.0

C++ および OpenGL 3.2 でこのクエリを実行するために、頂点配列オブジェクト、頂点バッファー オブジェクト、および要素配列バッファーをセットアップする方法を教えてもらえますか?

4

2 に答える 2

0

ジオメトリを描画するためのコードには、次の 2 つの重要な手順がありません。

  1. GL_ARRAY_BUFFER の作成 (glGenBuffers、glBindBuffer、glBufferData)
  2. 描画ステート マシンと配列バッファーの関連付け (gl...Pointer 関数の呼び出し)

複数のメッシュを描画できるものです。

于 2013-11-13T18:56:54.863 に答える
-2

いくつかの提案:

互いに接続されておらず、視覚的に 2 つのオブジェクトのように見える三角形の 1 つのコレクションを描画できます。

2 つの個別の OpenGL コンテキストを作成することもできます。描画するオブジェクトごとに 1 つのコンテキスト。各オブジェクトを描画するときは、関連するコンテキストを「現在の」コンテキストにして、描画呼び出しを行います。

于 2013-11-13T18:09:05.733 に答える