E.1 OpenGL 3.0 的配置文件和不推荐使用的功能
...
客户端顶点数组 - 所有顶点数组属性指针必须引用缓冲区对象(第 2.9.2 节)。默认的顶点数组对象(名称为零)也已弃用。在未绑定缓冲区对象或未绑定顶点数组对象时调用VertexAttribPointer会产生
INVALID_OPERATION
错误,当未绑定顶点数组对象时调用任何数组绘制命令也会产生错误。
glEnableVertexAttribArray的参考页面说:
GL_INVALID_OPERATION
如果没有绑定顶点数组对象,则由glEnableVertexAttribArray和glDisableVertexAttribArray生成。
我听到的消息是,在 OpenGL 2.x 和 OpenGL 3.x/3.2+ 之间完全可移植的综合顶点数组代码是不可能的,因为 2.x 不能使用 VAO(API 表面可以严格执行——感谢 GLAD!),并且 3.x 必须使用 VAO(这...某些驱动程序可能会强制执行?)
在我看来,健壮的代码必须在某些时候在专用的 2.x 和 3.x 代码路径(在运行时检测到)之间分支。这是真的?