我遇到了一些问题,让UIView使用大型CAEAGLLayer正常显示。如果框架高于某个尺寸(在任一维度上显然为768,且contentScaleFactor为2.0),则会使用先前版本缓冲区的扭曲图像重绘。
在Apple的GLPaint示例中很容易重现。 PaintingView.m的硬编码contentScaleFactor为1.0,但如果将其更改为2.0:
self.contentScaleFactor = 2.0;
在Retina iPad(不是模拟器)上运行它,当你画画时会得到这样的东西:
答案 0 :(得分:5)
正如Orion在this question报道的那样,这似乎是在Retina iPad上将kEAGLDrawablePropertyRetainedBacking
设置为YES的错误。使用
eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
删除了闪烁的绘图,但GLPaint依赖于其画笔的保留背景,因此如果您这样做,它将无法正常工作。
我已经提交了一个关于此的错误报告(rdar:// 11070429),修改后的GLPaint作为此行为的测试应用程序。