Я основал свою игру на демо-версии лунного посадочного модуля, хотя и сильно модифицированной, и я могу получить около 40-50 кадров в секунду, но проблема в том, что она колеблется между 40-50 кадрами в секунду настолько сильно, что это вызывает дрожание движущейся графики! Это очень раздражает и заставляет мою игру выглядеть дерьмово, когда на самом деле она работает с хорошей частотой кадров.
Я попытался установить более высокий приоритет потока, но это только ухудшило ситуацию... теперь он будет колебаться между 40-60 кадрами в секунду...
Я думал ограничить FPS примерно до 30, чтобы он был постоянным. Это хорошая идея, и есть ли у кого-нибудь еще опыт или другое решение?
Спасибо!
Это мой цикл бега
@Override
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if(mMode == STATE_RUNNING){
updatePhysics();
}
doDraw(c);
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
private void updatePhysics() {
now = android.os.SystemClock.uptimeMillis();
elapsed = (now - mLastTime) / 1000.0;
posistionY += elapsed * speed;
mLastTime = now;
}