我有一个关于CCNode的访问功能的问题
原始图像很好,轮廓清晰,没有什么特别之处,它由5个树叶精灵组成。
屏幕截图:

然后我想使用CCNode访问来复制它。
下面是代码
-(CCSprite *)flattenSprite:(CCSprite*)sprite textureSize:(float)textureSize {
CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:textureSize height:textureSize];
[rt begin];
// store the original sprite position
CGPoint p=sprite.position;
//set original sprite to a target point for open GL to "visit"
sprite.position=ccp(textureSize/2,textureSize/2);
// open GL visit
[sprite visit];
//original sprite return to original point
sprite.position=p;
[rt end];
return [CCSprite spriteWithTexture:rt.sprite.texture];
}通过这个函数,我可以通过限制舞台上存在的精灵的数量来优化应用程序的性能,但“复制的精灵”在它周围有一个黑色的边缘。它看起来很奇怪--尤其是当精灵相互重叠的时候。
请告诉我您是否有任何线索/在任何地方获得了关于此暗边缘问题的有用信息
发布于 2014-08-12 17:14:59
-(CCSprite *)flattenSprite:(CCSprite*)sprite textureSize:(float)textureSize {
CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:textureSize height:textureSize];
[rt begin];
// store the original sprite position
CGPoint p=sprite.position;
//set original sprite to a target point for open GL to "visit"
sprite.position=ccp(textureSize/2,textureSize/2);
// open GL visit
[sprite visit];
//original sprite return to original point
sprite.position=p;
[rt end];
CCSprite *renderSprite = [CCSprite spriteWithTexture:rt.sprite.texture];
//this will solve the dark edge problem
[sprite setBlendFunc: (ccBlendFunc) { GL_ONE, GL_ONE_MINUS_SRC_ALPHA }];
return renderSprite;
}https://stackoverflow.com/questions/7783948
复制相似问题