1. 程式人生 > >【SylixOS】Qt 基於FrameBuffer渲染介面

【SylixOS】Qt 基於FrameBuffer渲染介面

  1. 簡介 1
  2. SylixOSFB 1
    2.1 外掛的初始化 1
    2.2 視窗繪製 1
    2.3 SylixOSFB的實現 2

1.簡介
Qt是目前一款比較主流的人機互動介面庫。它有很強的跨平臺能力,可移植性好,被廣泛應用在PC端以及嵌入式領域。Qt可大致分為兩部分:QtGui和QtCore,QtGui提供開發人員一套完整的開發控制元件,可以快速開發客戶端介面;QtCore則負責底層渲染以及事件驅動等。而本章節主要介紹的是Qt的渲染機制,在Qt5中將底層渲染和視窗管理大致分為:
SylixOSFB、LinuxFB、KMS、XCB、Wayland。
SylixOSFB和LinuxFB採用相同的渲染方式:直接往FrameBuffer寫畫素值,這種方式只支援軟體渲染,主要使用CPU讀寫記憶體的方式。通過設定環境變數QT_QPA_PLATFORM=sylixosfb:fb=/dev/fb0和在程式啟動時新增-platform sylixosfb兩種方式執行Qt程式。
KMS:利用核心配置模式和drm機制,配合egl-device實現的帶有GPU加速模式。
XCB:是在X11視窗管理系統嵌入OpenGL渲染模式
Wayland:是一套輕量級的視窗管理系統,採用傳統的C/S框架,可以實現基於FrameBuffer和OpenGL兩種渲染方式。
2.SylixOSFB
2.1外掛的初始化
SylixOSFB遵循QPA外掛介面規範,在Qt程式初始化時,初始化平臺管理視窗、事件分發、滑鼠鍵盤輸入管理、Screen螢幕繪製。如圖 2.1所示
【SylixOS】Qt 基於FrameBuffer渲染介面


圖 2.1 外掛初始化
2.2視窗繪製
在SylixOSFBScreen中通過開啟fb0裝置獲取螢幕資訊,再通過mmap記憶體對映,重新整理螢幕畫素值。如圖 2.2所示
【SylixOS】Qt 基於FrameBuffer渲染介面
圖 2.2 FrameBuffer讀寫實現
2.3SylixOSFB的實現
下圖是SylixOSFB外掛和QtGui層互動流程圖。如圖 2.3所示
【SylixOS】Qt 基於FrameBuffer渲染介面
圖 2.3 SylixOSFB互動流程