2013-05-16 23 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。