在CCLabelTTF上的Cocos2d中使用glBlendFunc反转文本颜色

时间:2011-12-13 12:04:01

标签: iphone objective-c opengl-es cocos2d-iphone

我正在尝试将CCLabelTTF添加到我的Cocos2d项目中,并将文本作为其背后图形的反转版本。

我很难搞清楚要使用的混合基金。 我不得不承认我并不真正理解这背后的概念,所以我基本上只是尝试不同的模式。

我尝试了几种类型:

这个反转文本的背景,但文本保持白色:

[fontLabel setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA}];

你能帮助我朝正确的方向发展吗? 我希望文本被反转,背景不可见。

2 个答案:

答案 0 :(得分:4)

您可以使用恰当命名的Visual glBlendFunc tool

在视觉上试验各种blendfunc方法

您还应该知道CCLabelTTF在第1代和第2代设备上使用8位(alpha掩码,kCCTexture2DPixelFormat_A8)纹理,在第3代和更新设备上使用16位(alpha +强度掩码,kCCTexture2DPixelFormat_AI88)纹理。这可能会也可能不会影响混合模式结果,甚至使其无法实现,因为纹理不包含颜色信息,只包含alpha。

答案 1 :(得分:0)

使用glBlendFunc无法完成。混合方程式如下:

result = A * front_color  OP  B * back_color;

OpenGL允许您配置A,B - glBlendFunc(A, B);

和OP(操作) - glBlendEquation(OP);

要反转颜色,您需要

result = 1 - back_color;

您可以通过设置A = 1,B = 1,OP = FUNC_SUBTRACT来实现,但您必须在片段着色器中将front_color设置为(1,1,1,1)。

P.S。我可能错了,所以在下面写下评论,我会改变我的答案。