我正在使用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认为只有低分辨率图形可用的正确方法吗?
IIRC,只需使用@2x资源(启动、图标等)来向 iOS 发出信号,表明您正在运行支持 Retina 的应用程序。 我认为从那时起,Apple已经添加了一个NSHighResolutionCapable
键,您可以尝试在plist中设置false。 因此,请尝试从构建中删除所有@2x资源,并将该键设置为 false。
另一种方法是更改 glViewPort 和/或投影矩阵,将逻辑分辨率缩放到 1024x768。 我有相反的问题,因为我需要将非视网膜图像放大到视网膜支持比例。 我在堆栈中使用缩放矩阵来解决此问题。
问我如何混合和匹配视网膜和非视网膜图像!