本日仍在追蹤 0xdroid 的穩定性與效能議題,進行壓力測試時,順便將知名的 SDL 函式庫移植到 Android window system,更具體來說,就是允許在 Android Surface Manager (SurfaceFlinger) 上運作 SDL 應用程式,背景知識請參考 0xlab 圖形處理達人 olv 的簡報 "Introduction to Android Window System" (PDF)。依據 olv 提供的範例 SurfaceFlinger 操作程式,libSDL 可很快地加上 Android video backend,接著透過 libui 的 EventHub 取得來自 Linux input subsystem 的事件。現在初步的移植成果可參考下圖:
上圖展示一個以 SDL 撰寫的 NES 任天堂模擬器,顯示更新於新建立的 Android Surface 上,筆者將該 Android surface 的起始座標位置挪到 (100, 100),並設定其半透明度值,載入筆者最愛的泡泡龍 (Bubble Bobble) 遊戲 ROM。目前僅算堪用的狀態,未來要考慮到 Android Surface 限制 color space 為 RGB565 (針對 16-bit depth 顯示所做的優化限制),勢必得在 libSDL 引入若干 color space 轉換的繁瑣運算,可透過 ARM NEON 一類的硬體加速機制去改善效能。
1 意見:
Jump to comment form | comments rss | trackback uri