必须为每个 VAO 上传一次着色器制服吗?

App*_*ell 0 c++ opengl shader

每个顶点数组对象是否必须上传一次着色器制服(例如不经常更改的投影矩阵)?或者绑定变量与活动的VAO无关,着色器在绘制时只与顶点对象连接?

(例如,在通过绘制命令将顶点数据发送给着色器之前,着色器是否代表自己,或者是否以某种方式绑定到创建的 vao?)

Nic*_*las 6

制服与 VAO 无关;它们是完全不同的数据。制服是程序对象状态。VAO 是完全独立的对象。

与大多数状态一样,程序中的统一数据集将保持这种状态,直到您更改它为止。