Принудительно перерисовать с помощью CADisplayLink

#iphone #opengl-es #eaglview #cadisplaylink

#iPhone #opengl-es #eaglview #cadisplaylink

Вопрос:

В настоящее время я использую CADisplayLink для показа анимацию OpenGL, которая отлично работает. Однако иногда параметр изменяется, и мне нужно немедленно перерисовать представление, и я не могу ждать, пока следующий кадр не будет запрошен CADisplayLink . Если я этого не сделаю, у меня получится неправильный кадр, который в моем случае выглядит действительно плохо.

Итак, как я могу принудительно перерисовать, EAGLView не вмешиваясь в CADisplayLink материал?

Ответ №1:

Например, если ваша CADisplayLink вызывает метод drawFrame, тогда просто вызовите drawFrame самостоятельно, когда вам нужно. Нет причин, по которым вам нужно ждать CADisplayLink, если вы этого не хотите.

Ответ №2:

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