我有在OpenGL平滑滾動(測試上SGS2和ACE)
問題我創建簡單的應用程序 - 圖像的唯一固定速度橫向滾動,或僅一個圖像(播放器)由加速器移動, 但它的運動不順暢:-(
我嘗試了許多不同的代碼,但沒有滿意...的Android光滑遊戲循環
首先我想工作,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我只有繪圖對象和此代碼在單獨的線程中:
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));
}
}
這不光滑,它不是問題m與「後面跑步」
我的目標是像上面第一個代碼示例一樣的平滑圖像移動。
可能的錯誤是其他地方,然後我看。請,有人可以幫我嗎?
更好地使用RENDERMODE_WHEN_DIRTY或RENDERMODE_CONTINUOUSLY?
謝謝。
'通過移動加速器' 加速還給你心驚肉跳的數據。這可能是你的問題嗎?試着用「someLoc + =(newLoc - someLoc)* .1f;」來平滑運動 – zezba9000
你好,如果我嘗試禁用加速度計,只用簡單的移動圖像通過不斷的價值,它零星的輕彈(現在嘗試用RENDERMODE_WHEN_DIRTY) – Commanche