无法在Android上的SurfaceView中获得高fps

时间:2013-05-16 18:34:03

标签: android surfaceview

在我的游戏主题中,我试图获得高fps-大约60岁 但是只锁定画布已经使其最多为60 fps 这是我使用的代码 -

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 个答案:

答案 0 :(得分:2)

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

注意:调用'Log.d'和'String.valueOf'可能会显着降低帧速率,这是一个令人讨厌的问题22。