强制视网膜 iPad 使用非视网膜图像
Posted
技术标签:
【中文标题】强制视网膜 iPad 使用非视网膜图像【英文标题】:Force a retina iPad to use non-retina images 【发布时间】:2017-05-21 23:27:40 【问题描述】:我正在使用 OpenGL 创建应用程序...
我有一个视网膜 iPad,我正在使用存储 @2x 图像的纹理。当我的应用启动时,会创建 OpenGL 帧缓冲区并查询它的大小返回为 1536x2048 - 到目前为止一切顺利。
我也有非视网膜 iPad 显示器 (768x1024) 的纹理,但我没有非视网膜 iPad。我想强制我的视网膜 iPad 使用非视网膜图形(即,它使用比例 == 1.0)。所以我希望它创建一个 768x1024 OpenGL 帧缓冲区。问题是它总是创建一个 1536x2048 的帧缓冲区,并且比例总是 2.0。
有没有办法强制它使用 1.0 的比例,并创建一个更小的帧缓冲区?该应用的基本 ios 版本是 8.0,但由于 iOS8.0 仍可在 iPad2 上运行,我也想测试该分辨率。
我尝试过使用 UILaunchImages,但这似乎不起作用?过去,当为非视网膜屏幕编写应用程序时,视网膜设备用于缩放较低分辨率以适应高分辨率屏幕,这就是我想要的 - 至少这样我可以测试....
UILaunchImages 是否是让 iOS 认为只有低分辨率图形可用的正确方法?
【问题讨论】:
【参考方案1】:IIRC,只需使用 @2x 资源(启动画面、图标等)来向 iOS 发出信号,表明您正在运行支持 Retina 的应用程序。我认为从那时起Apple添加了一个NSHighResolutionCapable
键,您可以尝试在plist中设置为false。因此,请尝试从您的构建中删除所有 @2x 资源并将该键设置为 false。
另一种方法是更改 glViewPort 和/或投影矩阵以将逻辑分辨率缩放到 1024x768。我有相反的问题,我需要将非视网膜图像缩放到视网膜支持比例。我在堆栈中使用缩放矩阵来解决这个问题。
问我如何混合和匹配视网膜和非视网膜图像!
【讨论】:
以上是关于强制视网膜 iPad 使用非视网膜图像的主要内容,如果未能解决你的问题,请参考以下文章
如何在资产目录新图像集中删除所有 iPhone/iPad 视网膜/非视网膜图像
iPad Retina - iPad 使用 iPhone 视网膜图像
为视网膜/非视网膜设备创建 1 个 UIImage 并手动调整大小