在绘制iPad应用程序时创建多重效果

时间:2013-04-03 09:00:10

标签: ios opengl-es cocos2d-iphone

我正在尝试在适用于iOS的iPad应用中创建绘画功能。我已经设法通过触摸显示颜色,但我想重新创建photoshop的乘法功能,以便底层的黑白图像继续通过颜色显示。我开始用不透明度做这件事,但是经过相同的位置会导致它最终被移除。我正在使用cocos2d,这是示例代码。

in header
CCSprite *background;
CCRenderTexture *target;
CCSprite *brush;

in init method:
background = [CCSprite spriteWithFile:@"background.png"];
background.position = ccp(self.size.width/2, self.size.height/2);
[self addChild: background z:-1];
target = [[CCRenderTexture alloc] initWithWidth:self.size.width height:self.size.height pixelFormat:kCCTexture2DPixelFormat_RGBA8888];
[target setPosition:ccp(self.size.width/2, self.size.height/2)];
brush = [[CCSprite spriteWithSpriteFrameName:@"brush_spot.png"] retain];
[brush setColor:ccRED];

in -(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event method:
[target begin];
[brush setPosition:<CALCULATED POSITION>];
[brush visit];
[target end];

我尝试在画笔上使用不同的混合功能,但没有设法创建我想要的外观。直接在背景上添加精灵并将其混合功能设置为

时,我确实得到了正确的效果
[sprite setBlendFunc:(ccBlendFunc) { GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA }];

但是当我尝试在画笔上使用此混合功能时,屏幕上不会显示任何内容。

由于 伊恩

1 个答案:

答案 0 :(得分:0)

混合功能将顶部的任何东西与后面的任何东西混合在一起。当你渲染到纹理时,你会混淆任何纹理被消隐的东西。我猜这是alpha的东西。所以你应该使用不透明度绘制到纹理。

当您使用颜色填充纹理并将其附加到精灵时,您可以再次渲染它并将其与背景精灵混合。然后你可以使用乘法混合。