混合方式 | 解釋 | 因子值 |
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); // |