Layer-backed OpenGLView перерисовывается только при изменении размера окна

У меня есть окно с основным видом типа NSView и подвид, который является подклассом NSOpenGLView , имя которого ] CustomOpenGLView . Подкласс NSOpenGLView получается через Custom View в Interface Builder и путем установки его класса на CustomOpenGLView . Это сделано в соответствии с образцом кода Apple OpenGLView с поддержкой слоев .

Приложение предназначено для отрисовки чего-либо в OpenGLContext каждые, скажем, 0,05 секунды. С отключенным Core Animation Layer я могу видеть движущийся объект в представлении, что является следствием непрерывной перерисовки вида. И все работает безупречно.

Теперь я хочу иметь полупрозрачный вид поверх CustomOpenGLView для размещения кнопок управления, таких как play / stop / ecc ..

Для этого я добавил подпредставление в CustomOpenGLView , и я включил основной слой анимации на CustomOpenGLView . Кнопки управления размещены в этом новом подвиде.

Таким образом, представление с кнопками управления правильно отображается поверх CustomOpenGLView , но теперь представление не перерисовывается. Он отрисовывается только в том случае, если я изменяю размер окна, содержащего все эти представления.

В результате я не вижу никакой "анимации" ... Я вижу только неподвижное изображение, которое представляет первый кадр, который рисуется при запуске цикла рисования. Если я изменяю размер окна, openGLContext перерисовывается, пока я не перестану изменять размер окна. После этого я снова вижу неподвижное изображение с последним рисунком, произошедшим во время изменения размера.

Кроме того, когда начинается цикл рисования, на экране появляется только первый «кадр», и если я изменяю размер окна, скажем, через 5 секунд, я вижу в представлении именно то, что должно было быть нарисовано через 5 секунд после начало цикла рисования. Похоже, мне нужно установить [glView setNeedsDisplay: TRUE] . Я так и сделал, но ничего не изменилось.

В чем ошибка? Почему добавление основного слоя анимации прерывает перерисовку? Означает ли это что-то, чего я не понимаю?

9
задан Andrea3000 30 September 2011 в 12:08
поделиться