工作中遇到需要把图片变灰,透明度渐变的情况,使用
cc.GLProgramState.create(program)和setGLProgramState方法来设置。
但是,设置完的图片位置偏右上。
发现program中
gl_Position = CC_MVPMatrix * a_position;
把CC_MVPMatrix 改为 CC_PMatrix 即可 ,如果没有自定义program,则修改Gray.vsh文件中的这个参数。
CC_PMatrix 为原坐标,而CC_MVPMatrix 则会变动坐标。
CC_MVPMatrix本质上是一个变换矩阵,用来把一个世界坐标系中的点转换到Clipping space(对这一块并不是太了解)。