首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CCNode-a CCSprite复制的函数边缘变暗

CCNode-a CCSprite复制的函数边缘变暗
EN

Stack Overflow用户
提问于 2011-10-16 19:27:15
回答 1查看 700关注 0票数 0

我有一个关于CCNode的访问功能的问题

原始图像很好,轮廓清晰,没有什么特别之处,它由5个树叶精灵组成。

屏幕截图:

然后我想使用CCNode访问来复制它。

下面是代码

代码语言:javascript
复制
-(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];
}

通过这个函数,我可以通过限制舞台上存在的精灵的数量来优化应用程序的性能,但“复制的精灵”在它周围有一个黑色的边缘。它看起来很奇怪--尤其是当精灵相互重叠的时候。

请告诉我您是否有任何线索/在任何地方获得了关于此暗边缘问题的有用信息

EN

回答 1

Stack Overflow用户

发布于 2014-08-12 17:14:59

代码语言:javascript
复制
-(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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7783948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档