应用步骤
- 着色器和程序对象的概述
- 创建和编译着色器
- 创建和链接程序
【上接OpenGL ES 3.0 | 着色器源码、实例 与 管线程序源码、实例 的联系与细节 以及 各自的应用流程和相关API】 - 获取和设置统一变量
- 获取和设置属性
- 着色器编译器和程序二进制代码
统一变量和属性
一旦链接了
程序对象
,就可以在对象
上进行许多查询
;首先,需要找出
程序
中的活动统一变量
;统一变量(uniform)
是存储应用程序
通过OpenGL ES 3.0 API
传递给着色器
的
只读 常数值
的变量
;-
统一变量
被组合成两类统一变量块
;
第一类是命名统一变量块
,统一变量
的值 由统一变量缓冲区对象
支持;
命名统一变量块
被分配一个统一变量块索引
; -
第二类是默认的
统一变量块
,用于在命名统一变量块
之外声明的统一变量
;
和命名统一变量块
不同,
默认统一变量块
没有名称
或者统一变量块索引
; 如果
统一变量
在顶点着色器
和片段着色器
中均有声明
,
则声明的类型
必须相同,且在两个着色器
中的值也需相同
;在
链接
阶段,链接程序
将为程序中 与默认统一变量块
相关的活动统一变量
指定位置
;这些
位置
是 应用程序 用于 加载 统一变量的标志符;链接程序
还将为与命名统一变量块
相关的活动统一变量
分配偏移
和跨距
(对于数组和矩阵类型的统一变量)
获取统一变量
-
查询程序中
活动统一变量
的列表(/ 数量)
;
获取 程序中 最大统一变量名称的字符数量(最大长度)
:
-
找出每个
统一变量
的细节
:- 拿到
类型
和名称
:
- 拿到