Проверьте тип устройства для GPUImage
GPUImage требует, для iPhone 4 и ниже, изображения размером менее 2048 пикселей. 4S и выше могут обрабатывать гораздо больше. Как я могу проверить, на каком устройстве работает мое приложение? Я не нашел ничего в UIDevice
это то, что я ищу. Любые предложения / обходные пути?
3 ответа
Для этого вам не нужно проверять тип устройства, вам просто нужно прочитать максимальный размер текстуры, поддерживаемый устройством. К счастью, в GPUImage есть встроенный метод, который делает это для вас:
GLint maxTextureSize = [GPUImageContext maximumTextureSizeForThisDevice];
Выше приведен максимальный размер текстуры для устройства, на котором вы работаете. Это определит наибольший размер изображения, с которым GPUImage может работать на этом устройстве, и должно быть ориентировано на будущее, независимо от того, какие устройства iOS последуют.
Этот метод работает путем кэширования результатов этого запроса OpenGL ES:
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);
если тебе любопытно
Я также должен отметить, что вы можете предоставить изображения, размер которых превышает максимальный размер текстуры, для платформы, но перед обработкой они уменьшаются до максимального размера, поддерживаемого графическим процессором. В какой-то момент я могу завершить свой план по разбиению подразделов этих изображений на обработку, чтобы большие изображения могли поддерживаться изначально. Это далеко, хотя.
Это одна из лучших библиотек обнаружения устройств, с которыми я сталкивался: https://github.com/erica/uidevice-extension
РЕДАКТИРОВАТЬ: Хотя readme, кажется, предполагает, что более свежие версии находятся в ее источниках "Поваренная книга". Возможно, этот более актуален.
Вот полезный класс, который я использовал несколько раз в прошлом, который очень прост и легко реализуем,