这是我的代码看起来像
CCSprite *sp = [CCSprite spriteWithFile:@"textureWithOneColorbackground.jpg"];
[self addChild:sp];
// Change the blending factors
[sp setBlendFunc:(ccBlendFunc){GL_ONE, GL_ONE}];
[sp setColor:ccBLACK];
原始纹理颜色为(246,149,32) 结果现在是(0,0,0)
根据OpenGL,计算应该是这样的: ((246 * 1 + 0 * 1),(149 * 1 + 0 * 1),(32 * 1 + 0 * 1)) 所以它应该是一样的。
不知道为什么我在这里做错了,有人可以帮帮我吗?
此致
答案 0 :(得分:1)
[sp setBlendFunc:(ccBlendFunc){GL_ONE, GL_ONE}];
setBlendFunc设置glBlendFunc。源混合因子和目标混合因子。
[sp setColor:ccBLACK];
setColor并不意味着它适用于目标混合颜色。它意味着为顶点颜色设置颜色。
为顶点颜色设置黑色(R = 0,G = 0,B = 0,A = 1),如果背景颜色为黑色,
(([纹理颜色] 246 * [顶点颜色](0/255)* [GL_ONE] 1 + [背景颜色] 0 * [GL_ONE] 1),(149 *(0/255)* 1 + 0 * 1),(32 *(0/255)* 1 + 0 * 1))=(0,0,0)
iPhone 3D Programming是了解iPhone上OpenGL ES的好书。
答案 1 :(得分:0)
根据文件:
混合功能属性属于 到CCSpriteSheet,所以你不能 单独设置混合功能 属性。
您似乎将它应用于精灵而不是工作表。尝试将混合物应用到纸张上。