是否可以将活动着色器程序保存在 VAO 中?如果可以,如何?
Posted
技术标签:
【中文标题】是否可以将活动着色器程序保存在 VAO 中?如果可以,如何?【英文标题】:Is it possible to save the active shader program inside a VAO ?If yes, how? 【发布时间】:2017-05-29 18:01:57 【问题描述】:所以我通常会做的是:
//
...(这里有更多伪代码)
//此时着色器已附加到程序但 glUseProgram 没有
//调用
1) 绑定到 vao
2) 保存-关联 vao 中的 vbos
3) 解除绑定 vao
//准备渲染
4) 绑定vao
5) 通过 glUseProgram 使用适当的程序
6) 绘制
7) 解除绑定
但是是否有可能以某种方式将第 5 步移到 1 到 3 之间的某个位置?
【问题讨论】:
不,不可能。 (AFAIK) 几何与渲染方式无关。您可以使用相同的着色器绘制多个 VAO,也可以使用不同的着色器绘制相同的 VAO。因此,将着色器存储在 VAO 中是没有意义的。 【参考方案1】:VAO代表Vertex数组对象;它定义了how vertices are stored and accessed during rendering operations。它与程序没有直接关系,任何特定的 VAO 都可以与任何兼容的程序一起使用。
【讨论】:
以上是关于是否可以将活动着色器程序保存在 VAO 中?如果可以,如何?的主要内容,如果未能解决你的问题,请参考以下文章