2012-09-03 75 views
0

我測量的DeltaTime這樣的:的Android的OpenGL的DeltaTime措施問題

deltaTime = (System.nanoTime()-startTime)/1000000000.0f; 
      startTime = System.nanoTime(); 

但我一直都想與不同的浮點值正因爲如此我的比賽是stuttering.What可以是什麼問題?

09-03 03:51:59.219: D/a(21807): 0.017184043 
09-03 03:51:59.234: D/a(21807): 0.016405167 
09-03 03:51:59.249: D/a(21807): 0.018071748 
09-03 03:51:59.269: D/a(21807): 0.015293334 
09-03 03:51:59.284: D/a(21807): 0.016080335 
09-03 03:51:59.299: D/a(21807): 0.018669458 
09-03 03:51:59.314: D/a(21807): 0.014720625 
09-03 03:51:59.334: D/a(21807): 0.01605596 
09-03 03:51:59.349: D/a(21807): 0.017086169 

回答

0

如果您每幀都執行此代碼,這意味着這是渲染1幀所需的時間。

您應該根據(x distance per second) * deltaTime進行計算,因此您將根據每秒多少幀獲得平滑的動畫。

+0

是的,我正在做那個。例如我使用這段代碼來滾動我的屏幕render.guiCam.position.x + = dunya.CONSTANT * deltaTime; – droidmachine

+0

關於這個問題的任何想法? – droidmachine

+0

對不起,不太確定那是什麼問題。嘗試記錄位置,看看值是否平滑插值 –

0

這裏有一個從「開頭的Android遊戲」的僞代碼片段:

float lastFrameTime = currentTime(); 
while(!userQuit()) { 
    float deltaTime = currentTime() – lastFrameTime; 
    lastFrameTime = currentTime(); 
    currentScreen.updateState(input, deltaTime); 
    currentScreen.present(graphics, audio, deltaTime); 
} 

不知道這是否會幫助...

+0

我已經在使用該框架:)。我對這個模式有問題。 – droidmachine

0

開始的Android遊戲是不是一個偉大的書。

如果您在每一幀測量增量,您的計算將每次使用不同的值。這產生非常糟糕的結果,拋射體運動和非平凡的物理。爲獲得最佳效果,請將delta值固定爲合理的值(即1/60),並使線程在所有繪圖結束時等待,如果它自啓動以來小於1/60。