强制视网膜iPad使用非视网膜图像

时间:2017-05-21 23:27:41

标签: opengl-es textures retina-display retina ipad-2

我正在使用OpenGL创建应用...

我有一个视网膜iPad,我使用的是存储@ 2x图像的纹理。当我的应用程序启动时,会创建OpenGL帧缓冲区并查询它的大小为1536x2048 - 到目前为止一直很好。

我还有非视网膜iPad显示屏(768x1024)的纹理,但我没有非视网膜iPad。我想强迫我的视网膜iPad使用非视网膜图形(即,使用scale == 1.0)。所以我想创建一个768x1024的OpenGL帧缓冲区。问题是它始终创建一个1536x2048帧缓冲区,并且scale始终为2.0。

有没有办法强制它使用1.0的比例,并创建一个更小的帧缓冲?该应用程序的基本iOS版本是8.0,但由于iOS8仍可在iPad2上运行,我也想测试该分辨率。

我尝试过使用UILaunchImages,但这似乎不起作用?在过去,当为非视网膜屏幕编写应用程序时,视网膜设备用于缩放较低分辨率以适应更高分辨率的屏幕,这就是我想要的 - 至少我可以测试。 ...

UILaunchImages是尝试让iOS认为只有低分辨率图形可用的正确方法吗?

1 个答案:

答案 0 :(得分:0)

IIRC,只需使用@ 2x资源(启动,图标等)用于向iOS发出信号,表明您正在运行支持Retina的应用。我认为从那时起Apple已经添加了一个NSHighResolutionCapable密钥,您可以尝试在plist中设置false。因此,请尝试从构建中删除所有@ 2x资源,并将该密钥设置为false。

另一种方法是更改​​glViewPort和/或Projection矩阵,将逻辑分辨率调整为1024x768。我有相反的问题,我需要将非视网膜图像缩放到视网膜背衬比例。我在我的堆栈中使用Scaling矩阵来解决这个问题。

问我如何混合和匹配视网膜和非视网膜图像!