0

对于 iPhone 4 及更低版本,GPUImage 需要小于 2048 像素的图像。4S及以上可以处理更大。如何查看我的应用当前在哪个设备上运行?我还没有找到任何UIDevice我正在寻找的东西。有什么建议/解决方法吗?

4

3 回答 3

2

这是我遇到的最好的设备检测库之一:https ://github.com/erica/uidevice-extension

编辑:虽然自述文件似乎表明更新的版本在她的“食谱”来源中。也许这个更流行。

于 2013-08-03T20:21:54.580 回答
2

为此,您无需检查设备类型,只需读取设备支持的最大纹理大小即可。幸运的是,GPUImage 中有一个内置方法可以为您执行此操作:

GLint maxTextureSize = [GPUImageContext maximumTextureSizeForThisDevice]; 

以上将为您提供运行此设备的最大纹理大小。这将决定 GPUImage 可以在该设备上使用的最大图像大小,并且应该能够抵御未来的任何 iOS 设备。

此方法通过缓存此 OpenGL ES 查询的结果来工作:

 glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);

如果你很好奇。

我还应该注意,您可以向框架提供大于最大纹理尺寸的图像,但它们会在处理之前缩小到 GPU 支持的最大尺寸。在某个时候,我可能会完成我在处理过程中平铺这些图像的子部分的计划,以便本机支持更大的图像。不过,这还有一段路要走。

于 2013-08-04T21:48:19.190 回答
1

这是一个我过去多次使用过的有用的类,它非常简单且易于实现,

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

于 2013-08-03T23:58:40.803 回答