我试图让我的 OPENGL ES 应用程序支持视网膜显示。我添加了带有 @2x 扩展名的图像,并将内容比例因子设置为 2。高分辨率图像正确地进入屏幕,但质量损失很大。边缘模糊,并且没有我添加到资源文件夹中的图像质量。
我该如何解决这个问题?
最佳答案
我的应用程序基于默认框架,在基于 Retina 的设备上运行时遇到此问题。具体来说,我的帧缓冲区是以 320x480 而不是我想要的 640x960 创建的。抱歉 James,但这不是自动的,因为问题出在 renderBufferStorage:fromDrawable: 创建的帧缓冲区上。 (它代表我们调用 glRenderbufferStorage,但默认指定布局像素而不是 native 设备像素的宽度和高度)。
我在 EAGLView.m 的 initWithCoder: 中设置 eaglLayer.drawableProperties 的行下面添加了以下代码:
UIScreen *mainScreen = [UIScreen mainScreen];
if ([mainScreen respondsToSelector:@selector(scale)])
{
// iOS 4.0 and up (further to simeon's comment)
const CGFloat scale = mainScreen.scale;
self.contentScaleFactor = scale;
eaglLayer.contentsScale = scale;
}
感谢 David Amador 的 post为我指明了正确的方向。最近,感谢 simeon 的有用评论。
关于iphone - 视网膜显示屏图像质量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884176/