原文:点此
混合方式 | 解释 | 因子值 |
GL_ZERO | 全部不用 | (0 , 0 , 0 , 0) |
GL_ONE | 全部使用 | (1 , 1 , 1 , 1) |
GL_SRC_COLOR | 使用源颜色 | (Rs , Gs , Bs , As) |
GL_DST_COLOR | 使用目标颜色 | (Rd , Gd , Bd , 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 , As , As) |
GL_DST_ALPHA | 使用目标颜色的透明度 | (Ad , Ad , Ad , Ad) |
GL_ONE_MINUS_SRC_ALPHA | 减去源颜色的透明度 | (1-As , 1-As , 1-As , 1-As) |
GL_ONE_MINUS_DST_ALPHA | 减去目标颜色的透明度 | (1-Ad , 1-Ad , 1-Ad , 1-Ad) |
1
2
3
4
|
//
//{ '源因子' , '目标因子' }
BlendFunc cbl = { GL_SRC_ALPHA , GL_ONE };
//
|
1
2
3
4
5
6
|
//
const
BlendFunc BlendFunc::DISABLE = {GL_ONE, GL_ZERO};
const
BlendFunc BlendFunc::ALPHA_PREMULTIPLIED = {GL_ONE, GL_ONE_MINUS_SRC_ALPHA};
const
BlendFunc BlendFunc::ALPHA_NON_PREMULTIPLIED = {GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA};
const
BlendFunc BlendFunc::ADDITIVE = {GL_SRC_ALPHA, GL_ONE};
//
|
1
2
3
4
5
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);
this
->addChild(sp2);
//混合方式,新图片渲染时的混合方式
//{ 源因子 , 混合因子 }
BlendFunc cbl = { GL_SRC_ALPHA , GL_ONE };
sp2->setBlendFunc(cbl);
//
|