2013-05-16 17 views
1

我試圖獲得高fps-約60
但只鎖定畫布已經使60 fps的最
這是我使用的代碼 -不能獲得高的FPS SurfaceView在我的遊戲線程的Android

public void run() 
{ 
    super.run(); 
    int FPS = 60; 
        final long TPF = 1000/FPS; 
    long startTime; 
    long sleepTime; 

    while (m_run) 
    { 
     startTime = SystemClock.uptimeMillis(); 

     m_canvas = m_surfaceHolder.lockCanvas(); 
     if (m_canvas != null) 
     {    
     } 
     m_surfaceHolder.unlockCanvasAndPost(m_canvas); 
     sleepTime = TPF - (SystemClock.uptimeMillis() - startTime); 
     Log.d("sleep", String.valueOf((SystemClock.uptimeMillis() - startTime))); 
    } 

但只有通過調用lockCanvasunlockCanvasAndPost我得到60毫秒已經超過

回答

1

如果你想要一個真正的高幀速率60fps的一樣,你可能需要使用OpenGL,而不是SurfaceView。您仍然可以使用SurfaceView以每幀繪製的低到中等數量的精靈獲得合理的幀速率(例如〜30fps),但是我相信很難做到比不使用OpenGL更好。

注意:您對'Log.d'和'String.valueOf'的調用可能會顯着降低幀速率,這是一個令人討厭的catch-22。