سؤال

GPUImage requires, for iPhone 4 and below, images smaller than 2048 pixels. The 4S and above can handle much larger. How can I check to see which device my app is currently running on? I haven't found anything in UIDevice that does what I'm looking for. Any suggestions/workarounds?

هل كانت مفيدة؟

المحلول

For this, you don't need to check device type, you simply need to read the maximum texture size supported by the device. Luckily, there is a built-in method within GPUImage that does this for you:

GLint maxTextureSize = [GPUImageContext maximumTextureSizeForThisDevice]; 

The above will give you the maximum texture size for the device you're running this on. That will determine the largest image size that GPUImage can work with on that device, and should be future-proof against whatever iOS devices come next.

This method works by caching the results of this OpenGL ES query:

 glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);

if you're curious.

I should also note that you can provide images larger than the max texture size to the framework, but they get scaled down to the largest size supported by the GPU before processing. At some point, I may complete my plan for tiling subsections of these images in processing so that larger images can be supported natively. That's a ways off, though.

نصائح أخرى

This is among the best device-detection libraries I've come across: https://github.com/erica/uidevice-extension

EDIT: Although the readme seems to suggest that the more up-to-date versions are in her "Cookbook" sources. Perhaps this one is more current.

Here is a useful class that I have used several times in the past that is very simple and easy to implement,

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top