对于iPhone 4及更低版本,GPUImage需要小于2048像素的图像。 4S及以上可以处理更大的。如何查看我的应用当前正在运行的设备?我在UIDevice
找不到任何可以找到的东西。有任何建议/解决方法吗?
答案 0 :(得分:2)
这是我遇到过的最好的设备检测库之一:https://github.com/erica/uidevice-extension
编辑:虽然自述文件似乎表明她的“Cookbook”来源中有更多最新版本。也许this one更新。
答案 1 :(得分:2)
为此,您无需检查设备类型,只需读取设备支持的最大纹理大小即可。幸运的是,GPUImage中有一个内置方法可以为您完成此任务:
GLint maxTextureSize = [GPUImageContext maximumTextureSizeForThisDevice];
上面的内容将为您运行此设备的设备提供最大的纹理大小。这将决定GPUImage可以在该设备上使用的最大图像大小,并且应该可以防范未来的iOS设备。
此方法通过缓存此OpenGL ES查询的结果来工作:
glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);
如果你很好奇。
我还应该注意,您可以向框架提供大于最大纹理大小的图像,但在处理之前,它们会缩小到GPU支持的最大大小。在某些时候,我可能会完成我在处理中平铺这些图像的子部分的计划,以便可以原生支持更大的图像。不过,那还有一段距离。
答案 2 :(得分:1)
这是一个非常有用的类,我过去曾多次使用过,非常简单易用,