Проблемы с отображением полноэкранного CAEAGLLayer на Retina iPad

Я столкнулся с некоторыми проблемами при правильном отображении 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 ответ

Это похоже на ошибку с настройкой kEAGLDrawablePropertyRetainedBacking на ДА на сетчатке iPad, как сообщил Орион в этом вопросе. Установка этого на НЕТ, используя

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

удаляет сбитый рисунок, но GLPaint полагается на сохраненную основу для своих кистей, поэтому он не будет работать правильно, если вы это сделаете.

Я подал отчет об ошибке (rdar://11070429) с измененным GLPaint в качестве тестового приложения для этого поведения.

Другие вопросы по тегам