我编写了一些带有UIImage.CGImageRef并将其放入上下文的代码,以便我可以对其进行分析。一切都很好。但是,我现在希望在Cocos2D应用程序中实现此过程。
我的应用程序的所有图形都是使用Texture Packer作为精灵表完成的,所以我正在寻找任何方法来获取我需要的精灵表中的CGImageRef。
我的理论是你可以使用CGImageRef初始化一个CCSprite,为什么我不能简单地再把它取回来?
也许我错过了一些简单的东西,比如Cocos2D有一个CGImageRef等价物吗?
答案 0 :(得分:1)
你可以尝试这样的smth
CCRenderTexture *renderer = [CCRenderTexture renderTextureWithWidth:size.width height:size.height];
[renderer begin];
CCSpriteBatchNode *spriteSheet = [m_sprite batchNode];
if (spriteSheet != nil)
[spriteSheet visit];
else
[m_sprite visit];
[renderer end];
NSData* uidata = [renderer getUIImageAsDataFromBuffer:kCCTexture2DPixelFormat_RGBA8888];
UIImage* uiimage = [UIImage imageWithData:uidata];
CGImageRef image = [uiimage CGImage];
答案 1 :(得分:0)
您可以通过glReadPixels
从OpenGL获取图像数据。它需要一些调整,但在性能方面是错误的解决方案。 OpenGL被设计为单向传送器(您传递数据而不读取它)。根据您的具体任务,您可以在从文件加载纹理时预加载图像数据。
例如,我们使用纹理的alpha通道进行逐像素触摸测试。因此,当我们加载图像时,我们将其alpha阈值的位掩码存储在内存中。
答案 2 :(得分:0)
无 cctexture直接从[CCTextureCache sharedTextureCache]读取照片文件 来自[CCSpriteFrameCache sharedSpriteFrameCache]的ccspriteframe直接读取“.plist”文件