【发布时间】:2016-11-11 04:27:09
【问题描述】:
我正在使用自定义视图画布绘图 (postInvalidate()) 和 HardwareAcceleration 进行简单的 2D 游戏。经过数周的性能分析后,我决定通过接口Choreographer.FrameCallback 将我的更新和绘图操作与 VSYNC 脉冲同步。我认为这是获得平滑动作的正确方法。
但是我仍然经历波涛汹涌的运动。我用systrace 对其进行了分析,发现这与我的BufferQueue 有关。一旦双缓冲开始,帧时间就会超过 16 毫秒。我截取了我的踪迹并做了一些解释:
整个draw操作等待SurfaceFlinger(consumer)的buffer释放,将自己新的空Buffer出列。
您能告诉我这是否是正常行为,或者可能是什么原因?
【问题讨论】:
标签: android graphics double-buffering systrace