Я работаю над приложением для iPad, которое отображает световые сцены.Загрузка 20 или около того 1Kx1K текстур, которые задействованы, занимает некоторое время, и когда я начал синхронизировать различные операции, я обнаружил, что это занимает чуть меньше 1/2 секунды на текстуру.Изображение текстуры из файловой системы довольно быстрое, и узким местом является копирование UIImage
в CGContext
, чтобы передать изображение в glTexImage2D()
. Я пробовал два разных способа:создание копии:
CGContextSetInterpolationQuality(textureCopyContext, kCGInterpolationNone);
CGContextDrawImage( textureCopyContext, CGRectMake( 0, 0, width, height ), image);
и
UIGraphicsPushContext(textureCopyContext) ;
[uiImage drawInRect:CGRectMake(0, 0, width, height)] ;
UIGraphicsPopContext() ;
, и то и другое занимает около 0,45 секунды.Это кажется мне чрезмерным, даже для относительно слабого устройства.
Я относительно новичок в разработке для iOS, поэтому я просто хочу спросить, являются ли времена, которые я вижу, разумными, или их можно улучшить.
Обновление: Я знаю об альтернативе PVRTC, но сейчас я должен придерживаться PNG.Тем не менее, в этом ответе есть отличная сводка плюсов и минусов PVRTC.Тот же ответ также намекает на то, почему PNG приводят к такому длительному времени настройки текстуры - «внутреннему переупорядочению пикселей».Кто-нибудь может это подтвердить?