java – glBufferDataARB或glBufferSubDataARB?

我正在开发一种基于瓦片的物理游戏,如Falling Sand Game.我目前正在使用静态VBO作为顶点,使用动态VBO作为与每种块类型相关联的颜色.对于这种类型的游戏,颜色VBO中的数据变化非常频繁. (永远阻止更改)目前我正在为每个块更改调用glBufferSubDataARB.我发现这个工作,但它不能很好地解决分辨率. (随着分辨率的每次提高,速度要慢得多)我希望我可以将当​​前可玩分辨率提高一倍. (256×256)

我应该非常频繁地调用BufferSubData还是每帧一次调用BufferData?我应该放弃VBO并使用顶点数组吗?

对于不支持VBO的视频卡可以做些什么?

(注意:每个块大于一个像素)

解决方法:

首先,您应该停止使用这两个功能.自2002年左右以来,缓冲对象一直是核心OpenGL功能;没有理由使用它们的扩展形式.您应该使用glBufferData和glBufferSubData,而不是ARB版本.

其次,如果你想要高性能的缓冲区对象流,tips can be found on the OpenGL wiki.但是一般来说,在同一个内存上每帧多次调用glBufferSubData是没有用的.映射缓冲区并直接修改它可能会更好.

对于你的上一个问题,我会这样说:你为什么要关心?如前所述,缓冲区对象是旧的.这就像问你应该为只支持D3D 5.0的硬件做什么.

忽略它;没人会关心.

上一篇:聊聊BIO、NIO、AIO分别都是啥?有什么区别?


下一篇:关于 BIO & NIO & AIO