GTK+ 全面進化
Moblin 帶來的震憾莫過於 3D 樣貌的 UI,其底層 Clutter Toolkits 提供方便易用的 API,確實讓開發者能輕易撰寫炫麗的界面。不過,Clutter 的角色一直被視為一套新的 3D Engine,只是讓人重新打造操作介面而已。這未免小覷了 Clutter 的威力,其真正的好戲,在結合了 GTK+ 之後才正要開始。
這是一段結合 GTK+ Notebook Widget 的展示,隨著觸發而產生的換頁特效:
借由 Offscreen 的實作,可將各種 GTK+ Widget 畫在 Clutter Actor 之上,以此做各種動畫效果,其架構如下所示:
我們可以視為 GTK+ Widget 被轉換成一個個 Clutter Actor,當然這些 Widget 仍然還保留著原本各種 GTK+ 的性質,包括 Signal 等機制,只不過在顯示上,Widget 並非直接被畫在螢幕上,而是畫在 Clutter 的 Buffer 上,讓最後的繪圖動作都交由 OpenGL 做處理。此外,Clutter-GTK 實作了一個假的 GtkWindow 以騙過 GTK+ Toolkits,達成結合兩者的目的。
雖然現在許多 UI 設計都是一窩蜂照抄 iPhone,但不可否認,舊有的使用者習慣還是存在,畢竟遵循舊有習慣的軟體數量太多,還是不太可能一時間淘汰掉。但是, Clutter 給了一個新的機會,讓被人稱為極落伍的 GTK+ UI 有再進化的空間,至於能做到什麼程度,就看各開發者的創意了。
這是一段結合 GTK+ Notebook Widget 的展示,隨著觸發而產生的換頁特效:
借由 Offscreen 的實作,可將各種 GTK+ Widget 畫在 Clutter Actor 之上,以此做各種動畫效果,其架構如下所示:
我們可以視為 GTK+ Widget 被轉換成一個個 Clutter Actor,當然這些 Widget 仍然還保留著原本各種 GTK+ 的性質,包括 Signal 等機制,只不過在顯示上,Widget 並非直接被畫在螢幕上,而是畫在 Clutter 的 Buffer 上,讓最後的繪圖動作都交由 OpenGL 做處理。此外,Clutter-GTK 實作了一個假的 GtkWindow 以騙過 GTK+ Toolkits,達成結合兩者的目的。
雖然現在許多 UI 設計都是一窩蜂照抄 iPhone,但不可否認,舊有的使用者習慣還是存在,畢竟遵循舊有習慣的軟體數量太多,還是不太可能一時間淘汰掉。但是, Clutter 給了一個新的機會,讓被人稱為極落伍的 GTK+ UI 有再進化的空間,至於能做到什麼程度,就看各開發者的創意了。
謝謝你的文章,展示+配圖真是太OK了,讓我對GTK+充滿了信心。
回覆刪除請問,我可以將video轉錄給大陸的朋友看嗎?因為YouTube被GFW封鎖了。
另外,想知道是否有demo的源碼呢?我想學習學習,謝謝。
您好,我現在手頭上一時也沒有 source code,不過這方面已有不少開發者在研究,也許您可以去查查。
回覆刪除