Быстрое мерцание экрана при НЕ рисовании на Android OpenGL

Я хотел сэкономить время автономной работы. Мое приложение нужно рисовать только иногда. Поэтому я добавил этот код в мой Renderer в методе onDraw:

boolean dirty = true;

public void onDrawFrame(GL10 arg0) {
    if (!dirty) return;
    dirty = false;

    ..... draw images ....
}

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

Я знаю, что могу установить режим рендеринга наRENDERMODE_WHEN_DIRTY, Но я не хочу создавать другой поток, чтобы проверить, грязный он или нет.

Мой вопрос: почему он мигает? я не вызываю никаких методов или вызовов GLES20, прежде чем я сделаю свою проверку:if (!dirty) return; и я уверен, чтоboolean dirty не изменяется и всегда ложно, за исключением первого кадра.

РЕДАКТИРОВАТЬ:

Я изменил свой код на это:

int dirty = 0;

public void onDrawFrame(GL10 arg0) {
    if (dirty > 1) return;
    dirty++;

    ..... draw images ....
}

Это останавливает мерцание! Похоже, вам нужно рисовать по крайней мере 2 раза, чтобы у вас не было мерцающего экрана. В любом случае, теперь я попытаюсь использовать более чистый способ и создать поток, который вызываетrequestRender() когда я хочу что-то нарисовать и установить режим рендеринга наRENDERMODE_WHEN_DIRTY

Ответы на вопрос(2)

Ваш ответ на вопрос