14w29bのスナップショットでは、"Video Settings"メニューの中に、"Use VBOs"という新しいオプションが追加されています。
.
snapshot update]2によると、"Vertex Buffer Objects"を有効にすると、平均して5%から10%程度FPSが向上するとのことです。
VBOが視覚的にどのような役割を果たしているのか、簡単な説明を求めています。
Flaunting氏の回答は正しいのですが、なぜその方が効率的なのかということに興味がある方のために、以下に説明します。
即時モード(マインクラフトではこれがデフォルトだと思います)で、例えば正方形をレンダリングしたいとき。
.
フレームごとに次のようなコマンドを発行することになります(疑似コード)。
begin drawing
draw line from (0,0) to (1,0)
draw line from (1,0) to (1,1)
draw line from (1,1) to (0,1)
draw line from (0,1) to (0,0)
end drawing
1つの正方形のために、これは多くはありませんが、シーンには何百万もの頂点があり、それらはより多くの属性(色、法線など)を持っているかもしれません。これは、各フレームでGPUに送るデータの量が多くなります。
VBOSを使用すると、開始時にすべての頂点データをGPUメモリにロードします。疑似コードは次のようになります。
create VBO
load (0,0) into VBO
load (1,0) into VBO
load (1,1) into VBO
load (0,1) into VBO
load (0,0) into VBO
OpenGLのコードは、このVBOの名前を返してくれます(非ゼロの符号なし整数です)。これを参照して、四角を描画することができます。つまり、各フレームでは、1つの描画コマンドを発行するだけでよいのです。
draw vertices in VBO
線のために頂点のペアを使用するように描画状態を設定する必要があるかもしれませんが、VBOを追加するごとに、追加のドローコールが1回必要になるだけです。実際、スタティックレベルのジオメトリの場合(マインクラフトの場合はおそらく該当しない)、GPUメモリが十分にあれば、これらの頂点をすべて1つの巨大なVBOにまとめることができます。
スピードアップがわずか5~10%というのは驚きです。これはおそらく、ダイナミックレベルジオメトリのせいでしょう。
VBOはVertex Buffer Objectの略です。
ウィキペディアの記事]1より
VBO(Vertex Buffer Object)とは、OpenGLの機能の一つで、頂点データ(位置、法線ベクトル、色)をアップロードする方法を提供する。 頂点データ(位置、法線ベクトル、色など)をビデオデバイスにアップロードする方法を提供する。 頂点データ(位置、法線ベクトル、色など)をビデオデバイスにアップロードする方法を提供するOpenGLの機能です。VBOは VBOは、主に即時モードのレンダリングと比較して、大幅なパフォーマンスの向上を実現します。 VBOは、システムメモリではなく、ビデオデバイスのメモリにデータが格納されるため これは、データがシステムメモリではなくビデオデバイスのメモリに存在するため、ビデオデバイスで直接レンダリングできるからです。
簡単に言うと。
具体的には、マインクラフトでは、オンに設定するとパフォーマンスが約10%向上します。
これは、CPUとRAMの負荷を減らし、CPUメモリに再割り当てすることで実現していますが、これは、まあまあのグラフィックカードを持っている場合にのみ推奨されます。