0

現在、アプリケーションの速度テストをいくつか実行しており、特に表示リストを使用して、プログラムを最適化する方法をさらに見つけようとしています。現在、私は得ています:

882,000 頂点で 12 FPS

234,000 頂点で 40 FPS

72,000 頂点で 95 FPS

行われる呼び出しの数を最小限に抑える必要があることはわかっているので、代わりに次のようにします。

for(int i = 0; i < Number; i++) {
   glBegin(GL_QUADS);
   ...normal and vertex declarations here
   glEnd();
}

より良い方法は、これを行うことです:

glBegin(GL_QUADS);
for(int i = 0; i < Number; i++) {
   ...normal and vertex declarations here
}
glEnd();

これにより、FPS が上記の結果まで向上しましたが、ディスプレイ リストを最適化する他の方法はありますか? おそらく、ネストされた頂点配列以外のものを使用してモデル データを保存することでしょうか?

4

1 に答える 1

8

VBOまたは少なくともVertex アレイに切り替えることで、速度が大幅に向上します。

即時モード ( glBegin()...glEnd()) には、多くのメソッド呼び出しのオーバーヘッドがあります。最新の OpenGL を使用することで、ラップトップで数百 fps で最大 100 万の頂点をレンダリングすることができました (物理エンジン/エンティティ システムのオーバーヘッドもなければ高速になります)。

互換性について疑問がある場合は、約 98% の人が VBO 拡張機能をサポートしています ( GL_ARB_vertex_buffer_object) http://feedback.wildfiregames.com/report/opengl/

于 2012-10-17T23:24:37.697 に答える