Цель C отображать массив изображений - PullRequest
0 голосов
/ 19 ноября 2011

Итак, я создаю игру, в которой должен быть динамически генерируемый коралловый риф.У рифа есть несколько объектов, которые содержат изображения (100x100), которые я пытаюсь отобразить.Я могу отображать изображения, но с серьезным использованием процессора.Проблема заключается в моем коде рисования, который я считаю:

-(void)drawCoralWithContext:(CGContextRef)ctx{
    for(Coral *c in coral){
        CGRect coralRect = CGRectMake (0, 0, [c size], [c size]);

        CGLayerRef layerRef = CGLayerCreateWithContext(ctx, CGSizeMake([c size], [c size]), NULL);
        CGContextRef layerCtx = CGLayerGetContext(layerRef);
        coralRect = CGRectMake (0, 0, [c size], [c size]);
        layerRef = CGLayerCreateWithContext(ctx, CGSizeMake([c size], [c size]), NULL);
        layerCtx = CGLayerGetContext(layerRef);
        CGContextDrawImage(layerCtx, coralRect, [c image]);
        CGContextSaveGState(ctx);
        CGContextTranslateCTM(ctx, c.position.x, c.position.y);
        CGContextDrawLayerAtPoint(ctx, [c position], layerRef);
        CGContextRestoreGState(ctx);
        CFRelease(layerRef);
    }
}

Передаваемый контекст: CGContextRef ctx = UIGraphicsGetCurrentContext();

Мне нужно уменьшить объем обработки.Спасибо за любую помощь, спасибо.

1 Ответ

1 голос
/ 19 ноября 2011

Вы смотрели на CATiledLayer ? Его документация не очень хорошая, но предлагает много улучшений производительности для рисования экрана, заполненного множеством маленьких изображений. Есть некоторый пример кода из старых WWDC, и вы можете попробовать этот урок http://www.cimgf.com/2011/03/01/subduing-catiledlayer/

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