1、glprogram分析
2、实例应用,变暗、变灰shader
可见glprogram提供shader的编译、链接和使用,并且封装了一些方法
定义了一些枚举变量,包括一些固定的顶点属性、内置uniform,写好的一些shader名,如下:
glprogram初始化如下:
_program为shader的编号,_builtinuniforms为内置uniform的数组,用来存uniform的地址,hash值还不知道用来干嘛,后面分析,flag标记用的什么变换矩阵
然后是主要函数编译shader
先看init:
其中在某些平台上,如果已经编译过了则使用缓存中的
在编译中时,会把一些内置uniform加入到shader前面。如下:
再看link:
bindPredefinedVertexAttribs绑定一些顶点属性(这里有点疑惑)
然后把顶点属性的值存在map中
parseUniform同上,把uniform的相关值存在map中
updateuniform,设置一些标记,感觉很奇怪,为什么不直接使用前面的uniformmap(解决,之前存在map中的uniform会过滤掉cc_开头的内置uniform)
注意一点:在setUniform时,会用hash表存之前的值,如果相同就不再设置了
网友评论