2013-01-17 5 views
5

これまでのところ、即時表示リスト、頂点バッファ、頂点バッファオブジェクトのレンダリングについて知っています。どちらが最速ですか?どちらのOpenGLバージョンが必要ですか?私は何を使うべきですか?OpenGLレンダリングモード

+0

"*頂点バッファと頂点バッファオブジェクトレンダリング*"これら2つは同じものです。また、この質問に答えることはできません。その答えは、ハードウェア固有、ドライババージョン固有、および*ワークロード*固有のものです。 –

答えて

3

現代(古くは読まれていない)ハードウェアは、即時モードを本当に嫌っています。私は、即時モードを頂点配列に置き換えることにより、ほぼ2桁の性能向上を見ました。

OpenGL 3以降ではバッファオブジェクトのみがサポートされていますが、他のすべてのレンダリングモードは推奨されていません。

ディスプレイリストは、正しく使用するのに深刻な苦痛であり、古代以外のハードウェアでは価値がありません。

要約すると:OpenGL 3+を使用する場合は、(V)BOを使用する必要があります。 OpenGL 2をターゲットにする場合は、必要に応じて頂点配列またはVBOを使用します。

5

ここでレンダリングするのに最適な方法は、汎用バッファAKA Vertex Buffer Objectsを使用することです。私が正しいとすれば、それらは2.1からコアになりますが、一般に1.5ARB_vertex_buffer_object)に拡張子として現れます。彼らはハードウェアをサポートしています。つまり、GPUメモリに直接格納でき、おそらく直接格納されます。

データをロードするときは、推奨使用法を指定します。詳しくは、glBufferDataマニュアルを参照してください。たとえば、GL_STATIC_DRAWは静的表示リストと非常によく似ています。これにより、グラフィックスカードでグラフィックスカードへのアクセスを最適化できます。