cocos2d-x 3.x的GLProgramState剖析


最近在lua里给ccs的armature添加滤镜,发现cocos3.x的Program和2.x的大不一样,在此,mark下自己的解析过程.

首先,原来在2.x里的GLProgram现在在3.x里直接是Node类的成员了,而在2.x里只是Sprite的成员.

3.x比2.x更进一步的多了一个GLProgramState类,

这个类有什么作用呢?让我们来看看官方的说明:

/**
 GLProgramState holds the 'state' (uniforms and attributes) of the GLProgram.
 A GLProgram can be used by thousands of Nodes, but if different uniform values 
 are going to be used, then each node will need its own GLProgramState
 */

由此可见,GLProgram是通用的,而GLProgramState是每个Node私有的状态.

那么什么是Node私有的呢?

写过2.x的shader的小伙伴们都应该知道,一旦在shader代码里加入uniform变量,那么就需要在c++或者lua代码里继承下sprite,然后给这个继承类写一个变量来和shader里的uniform变量建立关系.

也就是说,uniform变量这样的变量就是Node所私有的状态,每一个node所使用的uniform变量值都可能不一样.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值