在我的游戏线程中,我试图获得高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)));
}
但只调用lockCanvas
和unlockCanvasAndPost
,我得到60毫秒已经过去
如果你想要一个非常高的帧率,比如60fps,你可能需要使用OpenGL而不是SurfaceView。你仍然可以获得合理的帧率(例如:使用每帧绘制少量或中等数量的精灵的SurfaceView,但我相信如果不使用OpenGL,很难做到比这更好。
注意:您的呼叫'Log '。d'和'字符串。valueOf可能会显着降低帧速率,这是一个令人讨厌的第22条军规。