无法在安卓版的 SurfaceView 中获得高帧率



在我的游戏线程中,我试图获得高fps-大约60
但是仅仅锁定画布就已经使它达到了60帧/秒
这是我使用的代码-

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毫秒已经过去

如果你想要一个非常高的帧率,比如60fps,你可能需要使用OpenGL而不是SurfaceView。你仍然可以获得合理的帧率(例如:使用每帧绘制少量或中等数量的精灵的SurfaceView,但我相信如果不使用OpenGL,很难做到比这更好。

注意:您的呼叫'Log '。d'和'字符串。valueOf可能会显着降低帧速率,这是一个令人讨厌的第22条军规。

最新更新