在14w29b快照中,在"视频设置"菜单中有一个新的选项,叫做"使用VBOs"。
快照更新说,启用"顶点缓冲对象"应该能使你的FPS平均增加5%到10%。
我正在寻找一个简单的解释,说明VBO在视觉上的作用以及它们是如何工作的。
Flaunting提供的答案是正确的,但如果有人对为什么它可能更有效感兴趣,这里有一个解释。
在即时模式下(我想这是minecraft的默认情况),当你想渲染例如一个正方形时。
你将在每一帧发出以下命令(伪代码)。
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
对于一个正方形来说,这并不是很多,但在一个场景中可能有数百万个顶点,而且它们可能有更多的属性(颜色、法线等)。这是每一帧要发送给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的'名字(一个非零的无符号整数)。然后,当你想画方块时,你可以参考这个名字。所以每一帧,你只需要发出一条绘制命令。
draw vertices in VBO
你可能需要设置绘制状态,使其使用成对的顶点来绘制线条,但对于每一个额外的VBO,你只需要一个额外的绘制调用。事实上,对于静态关卡的几何图形(可能不适用于minecraft),如果你有足够的GPU内存,你可以将所有这些顶点组合成一个巨大的VBO。
我很惊讶,速度只提高了5-10%。这可能是因为动态关卡的几何结构。
VBO是指顶点缓冲器对象
来自维基百科文章。
顶点缓冲对象(VBO)是OpenGL的一项功能,它提供了 将顶点数据(位置、法线矢量、颜色。 等)到视频设备,以便进行非即时模式的渲染。VBOs提供了 与即时模式的渲染相比,VBO提供了大量的性能提升,主要是 因为数据驻留在视频设备的内存中,而不是在系统内存中。 系统内存,因此它可以直接由视频设备渲染。
在简单的术语中
特别是在Minecraft中,当设置为ON时,它提供了一个~10%的性能提升。
它通过减少你的CPU和amp的工作量来做到这一点; RAM和重新分配它到你的GPU内存,这是唯一建议,如果你有一个良好的体面的显卡