У меня проблемы с плавной прокруткой в OpenGL (тестирование на SGS2 и ACE)
Делал простые приложения - только фиксированная скорость горизонтальной прокрутки изображений, или только одно изображение (плеер) двигающееся с помощью акселератора,
но движение не плавное :-(
Я пробовал много разных кодов, но не получил удовлетворения...
Сначала я попробовал работать с GLSurfaceView.RENDERMODE_CONTINUOUSLYи поместил весь код в onDrawFrame:
public void onDrawFrame(GL10 gl)
{
updateGame(gl, 0.017f);
drawGame(gl);
}
это самое простое и абсолютно гладкое!! - но это зависит от аппаратной скорости (= бесполезно)
public void onDrawFrame(GL10 gl)
{
frameTime = SystemClock.elapsedRealtime();
elapsedTime = (frameTime - lastTime) / 1000;
updateGame(gl, elapsedTime);
drawGame(gl);
lastTime = frameTime;
}
это лучше всего, но это не так плавно, как предыдущее, иногда щелкает
секунда, которую я пробовал GLSurfaceView.RENDERMODE_WHEN_DIRTY, в onDrawFrame i иметь только объекты рисования и этот код в отдельном потоке:
while (true)
{
updateGame(renderer, 0.017f);
mGLSurfaceView.requestRender();
next_game_tick += SKIP_TICKS;
sleep_time = next_game_tick - System.currentTimeMillis();
if (sleep_time >= 0)
{
try
{
Thread.sleep(sleep_time);
}
catch (Exception e) {}
}
else
{
Log.d("running behind: ", String.valueOf(sleep_time));
}
}
это не плавно, и это не проблема с "отставанием"
Моя цель - плавное движение изображения, как в первом примере кода выше.
Возможно, ошибка где-то в другом месте, чем я искал. Пожалуйста, может кто-нибудь помочь мне с этим?
Лучше использовать RENDERMODE_WHEN_DIRTY или RENDERMODE_CONTINUOUSLY?
Спасибо.