2012-03-01 10 views
0

私はUIImage.CGImageRefをとり、それを文脈に入れて解析できるようにするコードを書いています。これはすべて素晴らしいです。しかし、私は今このプロセスをCocos2Dアプリケーションに実装したいと考えています。CGImageRefをCCSprite、CCTexture2D、またはCCSpriteFrameCacheから直接取得しますか?

アプリのための私のグラフィックスはすべて、Texture Packerを使用してスプライトシートとして行われるので、スプライトシートから必要なCGImageRefを取得する方法を探しています。

私の理論では、CGImageRefでCCSpriteを初期化することができます。それで、なぜ単純にCGImageRefを再び取り戻すことができないのでしょうか?

多分私はCocos2DにCGImageRef相当のものがあるのと同じように単純なものがありませんか?

答えて

1

あなたはこの

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]; 
+0

"の.plist" ファイルから読み込む[CCSpriteFrameCache sharedSpriteFrameCache]から ccspriteframe直接写真ファイルから読み込ん[CCTextureCache sharedTextureCache]から直接無 cctextureのようななめらかを試すことができますこれの音のように私はそれを動作させるように見えることはできません。それは私がスプライトシートを設定する方法かもしれませんか?私はCCSpriteBatchNodeを使用しています*スプライトシート= [CCSpriteBatchNode batchNodeWithFile:@ "sheet.pvr.ccz"]; – EcksMedia

0

glReadPixelsでOpenGLから画像データを取得できます。いくつかの調整が必要ですが、パフォーマンス面では間違った解決策になります。 OpenGLは一方向コンベアとして設計されています(データを渡し、それを読み取らない)。具体的なタスクに応じて、ファイルからテクスチャを読み込む際に画像データをプリロードすることができます。

例として、ピクセル単位のタッチテストにアルファチャンネルのテクスチャを使用しています。したがって、イメージをロードするときに、アルファしきい値のビットマスクをメモリに格納します。

関連する問題