Получить CGImageRef из CCSprite, CCTexture2D или даже напрямую из CCSpriteFrameCache? - PullRequest
0 голосов
/ 01 марта 2012

Я написал некоторый код, который принимает UIImage.CGImageRef и помещает его в контекст, чтобы я мог его проанализировать.Это все прекрасно работает.НО, теперь я хочу реализовать этот процесс в приложении Cocos2D.

Вся моя графика для приложения выполнена в виде листов спрайтов с использованием Texture Packer, поэтому я ищу какой-либо способ получить CGImageRef, который мне требуетсялиста спрайта.

Моя теория состоит в том, что вы можете инициировать CCSprite с CGImageRef, так почему я не могу просто вернуть его обратно?

Может быть, мне не хватает чего-то простого, какУ Cocos2D есть эквивалент CGImageRef?

Ответы [ 3 ]

1 голос
/ 01 марта 2012

Вы можете попробовать что-то вроде этого

    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 голосов
/ 01 марта 2012

нет cctexture direct from [CCTextureCache sharedTextureCache] считывается из файла фотографии ccspriteframe direct from [CCSpriteFrameCache sharedSpriteFrameCache] для чтения из файла ".plist"

0 голосов
/ 01 марта 2012

Вы можете получить данные изображения из OpenGL через glReadPixels.Требуются некоторые корректировки, но это было бы неправильным решением с точки зрения производительности.OpenGL разработан как односторонний конвейер (вы передаете данные и не читаете их обратно).В зависимости от вашей конкретной задачи вы можете предварительно загрузить данные изображения при загрузке текстур из файла.

В качестве примера мы используем альфа-канал текстур для сенсорного теста на пиксель.Поэтому, когда мы загружаем изображение, мы храним его битовую маску альфа-порога в памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...