0

我正在尝试在 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 }];

但是当我尝试在画笔上使用这个混合功能时,屏幕上什么也没有出现。

谢谢伊恩

4

1 回答 1

0

blend 函数将上面的内容与后面的内容混合在一起。当您渲染到纹理时,您会与纹理空白的任何内容混合在一起。我猜这是 alpha 0 的东西。所以您应该使用不透明度绘制到纹理。

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

于 2013-04-03T12:05:38.187 回答