2013-08-03 4 views
0

GPUImage требует для iPhone 4 и ниже изображений размером менее 2048 пикселей. 4S и выше могут работать намного больше. Как проверить, какое устройство работает в настоящее время? Я ничего не нашел в , который делает то, что я ищу. Любые предложения/обходные пути?Проверить тип устройства для GPUImage

ответ

2

Для этого вам не нужно, чтобы проверить тип устройства, вы просто нужно прочитать максимальный размер текстуры, поддерживаемый устройством. К счастью, есть встроенный метод в GPUImage, что делает это для вас:

GLint maxTextureSize = [GPUImageContext maximumTextureSizeForThisDevice]; 

выше даст вам максимальный размер текстуры для устройства, которое вы бежите это на. Это определит самый большой размер изображения, с которым GPUImage может работать на этом устройстве, и должен быть надежным против любых устройств iOS.

Этот метод работает кэширование результатов этого запроса OpenGL ES:

glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize); 

, если вам интересно.

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

+0

Итак, вы говорите, что мне не нужно изменять его вручную, каркас автоматически изменит его размер, если он слишком большой? – Rob

+0

@Rob - для фотографий и фотографий, сделанных камерой, да. Я не верю, что исходный ввод данных делает это прямо сейчас. –

+0

Я использую UIImagePickerController прямо сейчас. Будет ли это проблемой? – Rob

2

Это является одним из лучших библиотек устройств обнаружения я столкнулся: https://github.com/erica/uidevice-extension

EDIT: Хотя риде, кажется, предполагают, что более до современных версий в ее источниках «Cookbook». Возможно, this one является более актуальным.

+1

В частности, вы хотите использовать файл 'UIDevice-Hardware.h' и метод' platformType'. – Wain

+0

Вам также понадобится файл .m, но да. – ipmcc