我正在尝试将CCLabelTTF添加到我的Cocos2d项目中,并将文本作为其背后图形的反转版本。
我很难搞清楚要使用的混合基金。 我不得不承认我并不真正理解这背后的概念,所以我基本上只是尝试不同的模式。
我尝试了几种类型:
这个反转文本的背景,但文本保持白色:
[fontLabel setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA}];
你能帮助我朝正确的方向发展吗? 我希望文本被反转,背景不可见。
答案 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。我可能错了,所以在下面写下评论,我会改变我的答案。