为什么绑定OpenGL缓冲区对象?
问题描述:
在OpenGL中的一般方法是结合一个命名缓冲对象(或顶点数组对象,帧缓冲器,...),调用当前绑定对象的某些操作,然后结合某种“默认”的对象:为什么绑定OpenGL缓冲区对象?
glBindBufferObject(GL_ARRAY_BUFFER, bufferObjectName)
glBufferData(GL_ARRAY_BUFFER, data, GL_STATIC_DRAW)
glBindBufferObject(GL_ARRAY_BUFFER, 0)
(KTlin的LWJGL)
我刚刚发现有很多函数的“named”版本。从上面的例子将变得像
glNamedBufferData(bufferObjectName, data, GL_STATIC_DRAW)
这是更适合在面向对象的上下文。
那么为什么要用第一个例子中的东西呢?我遇到的每个教程都使用了第一种方法,那么“命名”方法中是否存在性能下降或类似缺点?
“命名”函数仅适用于较新版本的OpenGL,如4.5。他们以前不存在。要使用什么取决于您是否要确保与旧硬件的兼容性。 – Rabbid76