我正在尝试在适用于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 }];
但是当我尝试在画笔上使用此混合功能时,屏幕上不会显示任何内容。
由于 伊恩
答案 0 :(得分:0)
混合功能将顶部的任何东西与后面的任何东西混合在一起。当你渲染到纹理时,你会混淆任何纹理被消隐的东西。我猜这是alpha的东西。所以你应该使用不透明度绘制到纹理。
当您使用颜色填充纹理并将其附加到精灵时,您可以再次渲染它并将其与背景精灵混合。然后你可以使用乘法混合。