glUseProgram 会改变 VAO 和/或 VBO 状态吗?

Posted

技术标签:

【中文标题】glUseProgram 会改变 VAO 和/或 VBO 状态吗?【英文标题】:Does glUseProgram alter VAO and/or VBO state? 【发布时间】:2018-12-26 06:19:07 【问题描述】:

当前安装的着色器程序是 VAO 状态的一部分和/或 VBO 状态的一部分吗?还是VAO和VBO切换时不受影响的独立状态?

根据these docsglUseProgram函数

安装程序对象作为当前渲染状态的一部分。

也就是说,“渲染状态”是如何定义的?

【问题讨论】:

【参考方案1】:

不,活动着色器不是 VAO 或 VBO 状态的一部分。

“渲染状态”似乎是指全局状态。

【讨论】:

以上是关于glUseProgram 会改变 VAO 和/或 VBO 状态吗?的主要内容,如果未能解决你的问题,请参考以下文章

程序解绑再反弹后如何恢复属性绑定

VAO/VBO 管理 - 更改所有 VBO 数据

多个缓冲器和 VAO 性能

glUseProgram() 和 glUseShaderProgram() 有啥区别?

VAO 是不是同时记住 EBO/IBO(元素或索引)和 VBO?

如何使用不同的 VAO、VBO 绘制 2 个或更多对象?