强制视网膜 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 视网膜图像

iPad 第三代无法显示视网膜图像

为视网膜/非视网膜设备创建 1 个 UIImage 并手动调整大小

带有 Tableview 图形的 iPad 2 模拟器上的问题仅影响非视网膜显示

如何在视网膜显示器上强制放大模式?