ipad 3 - ошибка openGL с kEAGLDrawablePropertyRetainedBacking и сетчатка?
У меня есть приложение openGL для iOS, которое использует свойство kEAGLDrawablePropertyRetainedBacking для рисования текущего кадра поверх предыдущего кадра. это дешевый способ получения эффектов, таких как следы движения.
он отлично работает на всех устройствах (включая iPhone с сетчаткой) и на всех симуляторах устройств, но на самом устройстве iPad 3 предыдущий кадр вертикально сжимается до 75% от его предыдущего размера.
например, если бы я рисовал квадрат 100 x 100 внизу экрана в каждом кадре, то в кадре 0 у меня был один квадрат, в кадре 2 - эхо-сигнал размером 100 x 75 с смещением к верхней части экрана, в третьем кадре есть дополнительное эхо, которое составляет 100 x 56 (56 ~= 75 * 0,75) и больше смещено к вершине, и так далее. что должно произойти, это то, что все эхо остается на месте.
Я проверил поведение на двух устройствах, поэтому не думаю, что это просто сломанный iPad.
есть идеи?
тиа, орион
2 ответа
Я видел эту ошибку. Я ничего не знаю об OpenGL, поэтому я не мог по-настоящему разобраться с решением с помощью текстур, как было предложено, но в моем случае я смог переключиться на очень быструю реализацию рисования Quartz 2D на основе учебника из http://blog.effectiveui.com/?p=8105, а также о том, как заставить его работать на Retina, по /questions/42956734/kak-sozdat-cgbitmapcontext-kotoryij-rabotaet-dlya-otobrazheniya-retina-i-ne-tratit-mesto-dlya-obyichnogo-otobrazheniya/42956753#42956753. Это на самом деле оказалось намного быстрее, чем код, который я позаимствовал из примера кода Apple GLPaint.
Это была подтвержденная ошибка с сохраненной поддержкой и Retina iPad в iOS 5.x. С тех пор это было исправлено в iOS 6.0 и выше.