在Retina iPad上显示全屏CAEAGLLayer的问题

时间:2012-03-18 08:42:47

标签: ios ipad opengl-es retina-display

我遇到了一些问题,让UIView使用大型CAEAGLLayer正常显示。如果框架高于某个尺寸(在任一维度上显然为768,且contentScaleFactor为2.0),则会使用先前版本缓冲区的扭曲图像重绘。

在Apple的GLPaint示例中很容易重现。 PaintingView.m的硬编码contentScaleFactor为1.0,但如果将其更改为2.0:

self.contentScaleFactor = 2.0;

在Retina iPad(不是模拟器)上运行它,当你画画时会得到这样的东西:

http://imgur.com/jPNqV

1 个答案:

答案 0 :(得分:5)

正如Orion在this question报道的那样,这似乎是在Retina iPad上将kEAGLDrawablePropertyRetainedBacking设置为YES的错误。使用

将其设置为NO
    eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];

删除了闪烁的绘图,但GLPaint依赖于其画笔的保留背景,因此如果您这样做,它将无法正常工作。

我已经提交了一个关于此的错误报告(rdar:// 11070429),修改后的GLPaint作为此行为的测试应用程序。