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

我遇到了一些问题得到一个大的CAEAGLLayer UIView正确显示。 如果该框架超过一定的尺寸(在contentScaleFactor为2.0的任一维度上显然为768),则会重绘以前版本缓冲区的扭曲图像。

在苹果的GLPaint例子中重现是非常容易的。 PaintingView.m有一个硬编码的contentScaleFactor为1.0,但如果将其更改为2.0:

self.contentScaleFactor = 2.0; 

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

View post on imgur.com

这个问题似乎是在视网膜iPad kEAGLDrawablePropertyRetainedBacking设置为YES的错误,Orion在这个问题中报告 。 设置为NO使用

  eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; 

删除毛刺图,但GLPaint依赖于它的画笔保留的支持,所以如果你这样做,它不会正常工作。

我已经提交了一个bug报告(rdar:// 11070429),修改过的GLPaint作为这个行为的testing应用。