0

我想突出显示一个带有矩形遮罩深色背景图像的区域。蒙版纹理是:

渲染结果是:

但这不是我想要的。我需要它是这样的(ps照片):

背景纹理是全屏尺寸的深色照片。

蒙版纹理为 40 像素大小。所以,我想在渲染时移动它以获得不同的形状。主要代码:

CCSprite *textureSprite=[CCSprite spriteWithFile:@"bg_blank_alpha.png"];
CCSprite *maskSprite=[CCSprite spriteWithFile:@"bg_box_futher.png"];
CCRenderTexture * rt = [CCRenderTexture renderTextureWithWidth:textureSprite.contentSizeInPixels.width height:textureSprite.contentSizeInPixels.height];
textureSprite.position = ccp(textureSprite.contentSize.width/2, textureSprite.contentSize.height/2);
[maskSprite setBlendFunc:(ccBlendFunc){GL_SRC_COLOR, GL_ZERO}];
[textureSprite setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_ALPHA, GL_ZERO}];
[rt begin];
maskSprite.position=ccp(160, 240);
[maskSprite visit]; 
maskSprite.position=ccp(200, 240);
[maskSprite visit];       
[textureSprite visit];    
[rt end];

CCSprite *retval = [CCSprite spriteWithTexture:rt.sprite.texture];
retval.flipY = YES;
[self addChild:retval];
retval.position=ccp(160,240);
4

1 回答 1

1

我不了解您的所有限制,但这也许会有所帮助。

据我了解,问题出在模糊区域重叠的地方。因此,您应该避免模糊区域重叠。如果只想渲染精灵,那么您可以将单个精灵分成不同的部分:

+-+----+-+ 
|a|  b |c|
+-+----+-+
| |    | |
|d|  e |f|
| |    | |
| |    | |
+-+----+-+ 
|g|  h |i|
+-+----+-+ 

然后仅在必要时渲染每个部分。

+-+----+----+-+ 
|a|  b |  b |c|
+-+----+----+-+
| |    |    | |
|d|  e |  e |f|
| |    |    | |
| |    |    | |
+-+----+----+-+ 
|g|  h |  h |i|
+-+----+----+-+ 

希望这有意义并有所帮助。

于 2012-09-08T15:18:45.293 回答