Проверьте тип устройства для 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, кажется, предполагает, что более свежие версии находятся в ее источниках "Поваренная книга". Возможно, этот более актуален.

Вот полезный класс, который я использовал несколько раз в прошлом, который очень прост и легко реализуем,

https://gist.github.com/Jaybles/1323251

Другие вопросы по тегам