Вопрос

При изменении размера генерируемого кодового кода с буферами и контекстом этого генерируемого кодового кода выполняются некоторые скрытые операции. В течение времени, необходимого для выполнения этих закулисных операций, рисование кода сгенерированного кода не дает правильных результатов.

В моем сценарии у меня есть код GLKView, в котором включен код GLKView, поэтому в любое время, когда мне нужно обновить его содержимое на экране, я просто вызываю код GLKView для этого GLKView. Я использую setNeedsDisplay для рисования изображений, поэтому, если мне нужно нарисовать изображение с другим размером, мне также нужно изменить размер -setNeedsDisplay.

Проблема: когда я изменяю размер кода GLKView и вызываю код GLKView в этом представлении, результат на экране неверный. Это связано с тем, что код GLKView не завершает закулисных операций, вызванных новым изменением размера, прежде чем он попытается нарисовать новое изображение.

Я нашел способ обойти это, вызвав: GLKView вместо простого setNeedsDisplay в GLKView. Это в основном заставляет основной поток ждать завершения всех закулисных операций openGL перед вызовом performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0. Хотя это работает нормально, мне интересно, есть ли лучшее решение. Например, существует ли вызов openGL, чтобы заставить поток ждать завершения всех операций openGL перед продолжением?

Это было полезно?

Решение

Решением было сбросить объект CIContext после изменения размера GLKView.
Спасибо всем!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top