原文:点此
混合方式 | 解释 | 因子值 | ||||
GL_ZERO | 全部不用 | (0,0) | ||||
GL_ONE | 全部使用 | (1,1,1) | ||||
GL_SRC_COLOR | 使用源颜色 | (Rs,As) | ||||
GL_DST_COLOR | 使用目标颜色 | (Rd,Ad) | ||||
GL_ONE_MINUS_SRC_COLOR | 减去源颜色 | (1-Rs,1-Gs,1-Bs,1-As) | ||||
GL_ONE_MINUS_DST_COLOR | 减去目标颜色 | (1-Rd,1-Gd,1-Bd,1-Ad) | ||||
GL_SRC_ALPHA | 使用源颜色的透明度 | (As,As,0)"> GL_DST_ALPHA | 使用目标颜色的透明度 | (Ad,Ad,0)"> GL_ONE_MINUS_SRC_ALPHA | 减去源颜色的透明度 | (1-As,1-As,1-As) |
GL_ONE_MINUS_DST_ALPHA | 减去目标颜色的透明度 | (1-Ad,1-Ad,1-Ad) |
1
2
3
4
|
//
//{'源因子','目标因子'}
BlendFunccbl={GL_SRC_ALPHA,GL_ONE};
//
|
4
5
6
BlendFuncBlendFunc::DISABLE={GL_ONE,GL_ZERO};
BlendFuncBlendFunc::ALPHA_PREMULTIPLIED={GL_ONE,GL_ONE_MINUS_SRC_ALPHA};
BlendFuncBlendFunc::ALPHA_NON_PREMULTIPLIED={GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA};
BlendFuncBlendFunc::ADDITIVE={GL_SRC_ALPHA,GL_ONE};
4.3、混合方式举例
6
7
8
9
10
11
12
13
14
15
16
//目标图片,已存在于屏幕上
Sprite*sp1=Sprite::create(
"red.jpg"
);
sp1->setPosition(mysize/3);
this
->addChild(sp1);
Sprite*sp2=Sprite::create(
"green.jpg"
);
sp2->setPosition(mysize/3.0*2.0);
->addChild(sp2);
//混合方式,新图片渲染时的混合方式
@H_727_403@//{源因子,混合因子}
sp2->setBlendFunc(cbl);
4.4、如下图所示