awtk/docs/framebuffer.md
2018-05-18 07:47:33 +08:00

2.0 KiB
Raw Blame History

FrameBuffer的几种使用方式

一、单framebuffer。

系统中只有一个framebufferLCD使用该framebuffer进行显示GUI使用该framebuffer进行绘制。

1

优点:

  • 只有一个framebuffer内存需求减半。
  • 无需额外内存拷贝,而且只需画变化的部分,所以性能很高耗电低。

缺点

  • GUI绘制的同时LCD在显示这很容易出现屏幕闪烁。为了避免闪烁可以在GUI绘制前禁用LCD同步数据(需等待LCD刷完后再禁用)等绘制完成时再启用LCD同步数据。我在stm32f429igtx上测试发现确实不闪烁了但是在窗口动画时颜色有些不正常。不知是不是LCD频繁启用/禁用LCD时钟来不及稳定导致的。

如果硬件能够解决动画颜色不正常的问题或者不需要动画,这种方式是最好的选择。

二、双framebuffer一个online一个offline轮流切换显示。

  • 1.GUI在offline的framebuffer上绘制。
  • 2.LCD显示online的framebuffer。
  • 3.GUI绘制完成后交换两个framebufferonline变offlineoffline变online。

2

优点:

  • 无需内存拷贝切换LCD的framebuffer地址即可。

缺点

  • GUI每次都需要进行完整的绘制不能只绘制变化的部分。

三、双framebuffer一个固定online供LCD显示一个规定offline供GUI绘制。

3

优点:

  • 只需绘制变化的部分绘制完成后把变化的部分从offline的framebuffer拷贝到online的framebuffer即可。

缺点:

  • 窗口动画时可能整个屏幕都在变化所以拷贝的量比较大。优化方法对于平移的动画可以让GUI直接往online的framebuffer上绘制减少一次内存拷贝而且不会出现闪烁。

以上方式各有优缺点请根据具体情况进行选择。AWTK中缺省使用第三种方式要改用其它方式也是非常简单的。