cocos2d::glprogram分析

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表存之前的值,如果相同就不再设置了



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容