0

免責事項: ドキュメントがないため、新しいバージョンの OpenGL は使用できません

一度しか使わないディスプレイリストと、OpenGLの即時モードのどちらを使うのがいいのか迷っています。

たとえば、次のようにします。

例 1:

glBegin(GL_QUADS);
glVertex2f(1.0f, 0.0f);
glVertex2f(1.0f, 1.0f);
glVertex2f(0.0f, 1.0f);
glVertex2f(0.0f, 0.0f);
glEnd();

例 2:

GLuint quad;
quad = glGenLists(1);
glNewList(quad, GL_COMPILE);

glBegin(GL_QUADS);
glVertex2f(1.0f, 0.0f);
glVertex2f(1.0f, 1.0f);
glVertex2f(0.0f, 1.0f);
glVertex2f(0.0f, 0.0f);
glEnd();

glEndList();
glCallList(quad);

更新ごとに例 1 または例 2 のいずれかを実行した場合 (表示リストの場合、変数キューブを再度コンパイルして新しい頂点を与える必要があります)、どちらが高速でしょうか?

4

3 に答える 3

0

書類不備のため

の完全な opengl 関数リファレンス

  1. OpenGL 4
  2. OpenGL 3.3
  3. OpenGL 2

仕様と参照ページ。

opengl.org (書籍、ドキュメントなど)

OpenGL 拡張ラングラー ライブラリ。

OpenGL のドキュメントは不足していません。OpenGL 関連のほぼすべてのドキュメントを見つけることができます。

一度だけ使用される表示リスト、または OpenGL の即時モード。

即時モード。ディスプレイ リストは再利用されるはずです。ディスプレイ リストを 1 回だけ使用すると、レンダリングにかかる​​時間は長くなります (99.9% の確実性)。

于 2013-07-10T15:21:21.520 に答える
0
  1. あなたの免責事項は意味がありません-ひいきにしないでください、これをグーグルで試しましたか?これは、頂点仕様に関するwiki ページです。ウィキの残りの部分を熟読して、どの関数が廃止され、新しい関数がいつ追加されたかを確認できます。たとえば、glBindBuffer()のページを確認してください。公平を期すために、そこにあるすべての OpenGL ドキュメントを理解するに少し努力が必要です。多くのチュートリアルはかなり古く、適切なPDF他のページを見つけること自体がタスクになる可能性があります。

  2. 可能な限り最新バージョンの OpenGL を使用する必要があります。VBO と VAO を使用してください。これらは、表示リストや即時モードよりもはるかに優れています。バイパーを運転できるのに、シビックとビートルの間で議論する必要はありません。

  3. 知っておく必要がある場合、速度の答えは次のとおりです。OpenGLの実装に依存します。その表示リストは非常に小さいため、表示リストのオーバーヘッドは、即時モードで実行するよりもおそらく高くなります。Ye olde Red Book 1.1では、この概念全体が詳細に説明されています。

  4. コードのプロファイリングを試して、どちらがより速く実行されるかを確認できます。これにより、ハードウェアに関する決定的な答えが得られます。

于 2013-07-10T14:47:59.803 に答える