2012-03-18 5 views
3

У меня возникли проблемы с получением UIView с большим CAEAGLLayer для правильной отображения. Если кадр превышает определенный размер (по-видимому, 768 в любом измерении с contentScaleFactor 2.0), он перерисовывается с искаженным изображением предыдущих версий буфера.Проблемы с отображением полноэкранного CAEAGLLayer на Retina iPad

Это довольно легко воспроизвести в примере Apple GLPaint. PaintingView.m имеет жёстко прописанные contentScaleFactor 1.0, но если вы измените его до 2,0:

self.contentScaleFactor = 2.0; 

и запустить его на Retina IPad (не симулятор), вы получите что-то вроде этого, когда вы рисуете:

http://imgur.com/jPNqV

+1

выпущена версия iOS 5.1.1, но похоже, что эта проблема не была исправлена ​​на моем экране сетчатки «iPad 3». Hmmmm .... –

ответ

5

Это, кажется, ошибка с установкой kEAGLDrawablePropertyRetainedBacking ДА на сетчатке IPADS, как сообщает Orion в this question. Установка, что NO с помощью

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

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

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

+0

Спасибо, Брэд, я создаю приложение для рисования на основе GLPaint, я понимаю, что я не могу поддерживать рисунок для отображения сетчатки iPad3? (BTW - GPUImage потрясающе, tnx!) –

+0

@YogevShelly - Есть способы сделать это, но вам нужно будет изменить GLPaint, чтобы использовать другой процесс рисования (например, рендеринг текстуры). GLPaint действительно является ужасным примером для начала, если вы не знакомы с OpenGL ES, так что вам почти лучше писать собственное приложение рисования с нуля. –

+0

Настройка kEAGLDrawablePropertyRetainedBacking to NO приводит к анимированному эффекту Ant-Trail. так что теперь я должен просто забыть о CAEAGLLayer и посмотреть на другие методы рисования OpenGL? (я не знаком с openGL) –

Смежные вопросы