Проблемы с отображением полноэкранного CAEAGLLayer на Retina iPad - PullRequest
3 голосов
/ 18 марта 2012

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

5 голосов
/ 18 марта 2012

Похоже, что это ошибка с установкой kEAGLDrawablePropertyRetainedBacking на ДА на Retina iPads, о чем Орион сообщил в в этом вопросе .При установке значения * NO с использованием

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

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

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

...