Check Device Type For GPUImage

雨燕双飞 提交于 2019-12-12 00:44:14

问题


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?


回答1:


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.




回答2:


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.




回答3:


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



来源:https://stackoverflow.com/questions/18036928/check-device-type-for-gpuimage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!