Почему мое представление OpenGL ES иногда пустое на iOS 4.3? - PullRequest
3 голосов
/ 20 марта 2011

Мое приложение "Guess-A-Sketch" имеет проблемы с рисованием в iOS 4.3. У меня есть блеск для рисования, который выглядит черным. Странно то, что я обнаружил, что если немного отрегулировать размер кадра в представлении ogl, похоже, что он работает ... версия, которая у меня есть в магазине приложений, не работает, поэтому я должен сделать обновление, чтобы исправить ... хотя это выглядит как ошибка. Кто-нибудь еще видел это? Очень надоедливый! даже с моей настройкой кадра исправьте вид, мерцающий черный, когда у меня есть анимированные преобразования на виде, которые были гладкими в предыдущих версиях ios

Ответы [ 4 ]

2 голосов
/ 21 марта 2011

Возможно, вы столкнулись с проблемой, упомянутой в этом ответе .В iOS 4.2 способ обработки буферов рендеринга был изменен для повышения производительности.Из Руководства по программированию OpenGL ES :

В iOS 4.2 и более поздних версиях ротация буферов рендеринга Core Animation была значительно улучшена и теперь является предпочтительным способом поворота контентамежду пейзажным и портретным режимом.Для достижения максимальной производительности убедитесь, что высота и ширина рендер-буфера кратны 32 пикселям.

В iOS 4.2 была ошибка, из-за которой просто не отображались размеры рендер-буфера OpenGL ES, не кратные 32как черный под симулятором (но нормально работал на устройстве).Учитывая, что ваш контент отображается правильно в некоторых размерах, но не в других, вы можете столкнуться со связанной проблемой.

В любом случае вам нужно убедиться, что ваши рендербуферы теперь даже кратны 32 для лучшегопроизводительность в любом случае.

1 голос
/ 09 июня 2011

Я подозреваю, что со мной происходит то же самое, мое приложение работало на 4.2.2, но оно имеет странное поведение в 4.3. Я рисую изображения в «представлении openGL», которое является подпредставлением UIScrollView, иногда изображение становится черным, пока не получит жест «пинч-ин» или «пин-аут», иногда, когда изображение изменяется в масштабе, оно оставляет черную рамку там, где изображение было нарисовано за мгновение до этого, также иногда изображение прекрасно прокручивается внутри вида с прокруткой, но в других случаях оно становится черным и не следует за прокруткой. Ничего из этого не происходит в устройствах 4.3.

Спасибо за ваше время. Грег

0 голосов
/ 01 сентября 2011

У меня была такая же проблема, и это сводило меня с ума.

Чтобы исправить это, я просто указал backgroundColor для моего представления Open GL. У меня есть нет идеи, как эта штука работает, но она сделала , решила эту проблему для меня.

Надеюсь, это поможет.

Кстати, эта специфическая проблема, похоже, исправлена ​​в iOS 5.

0 голосов
/ 21 марта 2011

Я согласен с Брэдом, что черный фон звучит как ошибка 32, но мерцание - нет ... Может быть, вы могли бы попытаться установить для Raintained back значение true.Это может помочь.

В OpenGLES2DView.m:

eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:
                                    [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...