ios - CCRenderTexture 和 CCDirector 渲染不同?

标签 ios cocos2d-iphone

我想在我的项目中使用 CCRenderTexture,因为我有很多 CCLabelBMFont,它们大多是静态的。将它们全部添加到我的场景中会导致一些性能问题(是的,您可以使用 BatchNotes 等,但它并没有真正帮助)。所以我将它们渲染成一个纹理,显着提高了性能!但问题是渲染的纹理和直接渲染的节点看起来不一样。我不知道为什么!

我创建了一个 cocos2d-sample 项目并创建了这个:

CCSprite* testImage = [CCSprite spriteWithFile:@"N.png"];
testImage.position = ccp(100,100);
CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:786 height:1024];
[rt beginWithClear:0 g:0 b:0 a:0];
[testImage visit];
[rt end];
CCSprite* renderedSprite = [CCSprite spriteWithTexture:rt.sprite.texture];
renderedSprite.position = ccp(386,512);
// Flip because CCRenderTexture is flipped
renderedSprite.flipY = YES;
// Add normal node an the rendered sprite
testImage.position = ccp(130,100);
[self addChild:testImage];
[self addChild:renderedSprite];

结果如下所示:
The texture has less glow

怎么会这样?我怎样才能让它们看起来一样?
右边的 N 是 Sprite 以“正常”的方式添加并且显示正确。左边的 N 是纹理。

编辑:
我找到了 this tutorial这暗示混合功能是不同的。所以我可以寻找正确的功能以使它们看起来相同。

最佳答案

我找到了解决方案!
我用了this example创建 Sprite ,但是当我再次查看 cocos2d 手册时,我看到,您可以将 CCRenderTexture 直接添加到您的场景中。这就是我所做的,它解决了问题!

所以正确的代码应该是:

CCSprite* testImage = [CCSprite spriteWithFile:@"N.png"];
testImage.position = ccp(100,100);
CCRenderTexture *rt = [CCRenderTexture renderTextureWithWidth:786 height:1024];
[rt begin];
[testImage visit];
[rt end];
rt.position = ccp(386,512);
// Add normal node an the rendered sprite
testImage.position = ccp(130,100);
[self addChild:testImage];
[self addChild:rt];

关于ios - CCRenderTexture 和 CCDirector 渲染不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13378261/

相关文章:

cocos2d-iphone - CCMutableArray 已弃用,如何更改代码

ios - 使用 RxSwift 和 MVVM 显示事件指示器

iphone - 使按钮消失和重新出现

ios - 无法使用 tabbar swift 在当前上下文中显示 Controller

ios - CCTexture2D 创建的 texture.size 不等于 image.size(仅在 iPad 上 --> iPad 模拟器工作正常)

objective-c - cocos2d mac应用程序启动时如何添加启动画面(Default.png)

ios - 在 Swift 中从 Objective-C 访问 extern NSString

ios - 'initwithidentifer' 之前是什么?

ios - 分配对象的潜在泄漏

objective-c - UI_USER_INTERFACE_IDIOM() 总是在 iPad 4.3 模拟器上返回 UIUserInterfaceIdiomPhone?