5

これまでのところ、イミディエイト、ディスプレイ リスト、頂点バッファー、頂点バッファー オブジェクトのレンダリングについて知っています。どれが一番速いですか? それぞれに必要な OpenGL のバージョンはどれですか? 何を使えばいいですか?

4

2 に答える 2

5

現在のレンダリングの最良の(そしてほとんど唯一の)方法は、汎用バッファー、別名頂点バッファーオブジェクトを使用することです。私が正しければ、これらは2.1からコアになっていますが、通常は1.5の拡張機能として表示されます(as ARB_vertex_buffer_object)。それらはハードウェアをサポートしています。つまり、GPUメモリに直接保存することができます。

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

于 2013-01-17T11:05:18.527 に答える
3

最新の(読む:非古代の)ハードウェアは、即時モードを本当に嫌います。イミディエイトモードを頂点配列に置き換えることで、パフォーマンスがほぼ2桁向上することを確認しました。

OpenGL 3以降は、バッファオブジェクトのみをサポートし、他のすべてのレンダリングモードは非推奨になりました。

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

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

于 2013-01-17T11:03:25.290 に答える