【问题标题】:Must shader uniforms be uploaded once for every VAO?必须为每个 VAO 上传一次着色器制服吗?
【发布时间】:2013-08-28 23:00:20
【问题描述】:

必须为每个顶点数组对象上传一次着色器制服(如不经常变化的投影矩阵)吗?还是绑定的变量与激活的VAO无关,而shader在绘制时只与顶点对象连接?

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

【问题讨论】:

  • 想想制服,正如他们的名字所暗示的那样,他们是制服。顶点数组用于在每个顶点的基础上提供数据,但统一变量在输入数据的每个元素(例如顶点 [VS]、原始 [GS]、片段 [PS])中是统一的,您的 GLSL 的每个阶段(着色器)程序运行。您为每个程序对象设置它们,并且该值可以在附加到该程序的每个阶段中使用。

标签: c++ opengl shader


【解决方案1】:

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

与大多数状态一样,在程序中设置的统一数据将保持不变,直到您对其进行更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多