【步兵 shader】封装篇 By EOS.
上篇介绍了基础,这篇先介绍下ShaderTools的封装,为以后打好基础。
注:这篇文章是基于cocos2dx的
文中有不懂的地方可去回顾上篇:《【步兵 shader】基础篇》
几个相关的类
首先介绍几个类
GLProgram //shaderProgram
GLProgramCache//可以存放已经链接过的shaderProgram
GLProgramState//这个类是基于Program的封装,为了更方便的传参
有了这几个类就基本OK了,本身shader的难度就不是在这些地方,可能一直没接触,
所以会显得很神秘。值得注意的一点,shaderProgram每次链接都是一次很大的开销,
所以如果每次都创建链接的话,效率会非常低,所以一定要使用GLProgramCache。
源码部分
ShaderTools={}
local cls = ShaderTools --个人习惯,避免复制拷贝忘记改类名
stl = ShaderTools
--往GLProgramCache添加编译过的shaderProgram
local glProgramCache = cc.GLProgramCache:getInstance()
function cls.add(key, vert, frag)
if vert == nil