【发布时间】:2020-10-22 09:11:12
【问题描述】:
OpenGL 3.0 的 E.1 配置文件和已弃用的功能
...
客户端顶点数组 - 所有顶点数组属性指针必须引用 缓冲对象(第 2.9.2 节)。默认顶点数组对象 (名称零)也已弃用。调用 VertexAttribPointer 时 没有缓冲区对象或没有绑定顶点数组对象将生成一个
INVALID_OPERATION错误,调用任何数组绘图命令也会如此 当没有绑定顶点数组对象时。
ref page for glEnableVertexAttribArray 说:
如果没有绑定顶点数组对象,
GL_INVALID_OPERATION由 glEnableVertexAttribArray 和 glDisableVertexAttribArray 生成。
我听到的消息是,在 OpenGL 2.x 和 OpenGL 3.x/3.2+ 之间完全可移植的综合顶点数组代码是不可能的,因为 2.x 不能使用 VAO(API 表面可以严格地强制执行——感谢 GLAD!),并且 3.x 必须使用 VAO(这...某些驱动程序 maaaybe 强制执行?)
在我看来,健壮的代码必须在某些时候在专用的 2.x 和 3.x 代码路径(在运行时检测到)之间分支。这是真的吗?
【问题讨论】:
-
(我......我知道这可能是一个时间胶囊,这个问题更适合 2010 年而不是 2020 年,但 2.x 在这里对我来说很重要哈哈。)
-
您可以在启动时创建并绑定一个 VAO,然后忘记它的存在,并像使用 GL 2.x 上下文一样继续操作,至少就顶点而言设置/提交。
标签: opengl vao opengl-2.0