為什麼Adobe要推出Starling框架

2021-05-28 13:10:52 字數 1333 閱讀 8058

相信很多開發者都在問這個問題:為什麼adobe要推出starling框架來做2d加速,而不是直接對displaylist進行gpu渲染呢?

* {9 ?& d8 y8 j: ~  m: i/ [" o' r# x% q

這篇文章(en)給予了詳細的解答,參見:

文章摘要:) m4 e% b; k4 w. r' s6 l

很多朋友在問上面的問題(為什麼不直接對displaylist進行gpu支援),而實際上,adobe已經在這條路上探索了好幾年了。

1.在2023年推出的flash player 10,增加了乙個"wmode=gpu"選項,這個選項的作用就是,將cpu預處理的顯示物件,作為紋理傳送給gpu來處理和合成。但實際上發現開啟這個選項的**非常少,大多數人對於「更快的內容展現」沒有興趣,更糟糕的是在某些情況下人們會發現cpu渲染比gpu渲染更快(後文會解釋),基於這個原因,而且增加gpu支援的研發成本很高,所以adobe在flash player 10.3的時候就將選項回滾到了wmode=direct

2.在移動裝置上,包括android和ios,我們提供了『rendermode=gpu』.不同於桌面的wmode設定,這個將直接通過opengles2呼叫gpu來渲染向量圖形。這個特性至今而在使用並取得了成功。

那麼對於傳統的顯示列表進行gpu渲染的問題是什麼?因為傳統的displaylist的設計思想是基於軟體渲染的,它並不是很容易就能通過gpu渲染得到更快的速度。& c+ q; ?% u8 a

1.傳統的顯示列表渲染提供了一些特性,比如遮罩,九宮格,這些您在starling中不得不尋找其它的途徑才能得到相似的結果。! o6 s, x0 a5 d$ n0 `8 z

2.很多傳統的顯示列表的特性難以很快的轉移到gpu模式,包括:圖層色彩混合模式,濾鏡,變換,和系統文字等等。這些無法實現的部分我們還是需要回滾到軟體渲染模式。

3.gpu難以處理深層次的巢狀。在flash中乙個電影剪輯套另乙個電影剪輯是常見的,但這對gpu渲染是一大禁忌。您或許認為應該很容易實現對它的優化,但實際情況並非如此。

4.gpu喜歡位圖。如果是向量圖形,將意味著每幀都要提交紋理,這將產生大量的vertex data,將在移動裝置的gpu和intel的桌面gpu產生問題。

5. 滑鼠事件是基於經典的displaylist的事件冒泡機制。) _; b, i2 y- ?/ ~4 @

6.傳統的displaylist是乙個巨大的狀態機,基於「幀」進行重新整理。

希望這些解釋,可以解答一部分網友的疑問。7 z. ?) r$ {, n

我希望在未來,大多數的遊戲和多**內容,將遷移至stage3d,但仍然基於傳統的顯示列表,去處理諸如高保真的向量圖形,文字渲染,畫素處理等內容。傳統的顯示列表肯定不會消失,我們將繼續增加新的功能和優化效能。

為什麼要選擇ISP 為什麼要選擇AHD

在影象傳輸中,我們為什麼選擇nextchip?為什麼要選擇isp?為什麼要選擇ahd?為什麼選擇北京冠宇銘通?這個問題我倒著回答各位 一 北京冠宇銘通科技是nextchip目前為止唯一一家正式官方授權 車載產品廠家之一 二 ahd和其他幾種傳輸方式相比,擁有自己的專利,其他幾家有專利的沒有幾個,如果...

為什麼要分詞

這裡不討論這個問題,我要說的為什麼要分詞?分詞是什麼!有人問 分詞有什麼作用啊?某人答 搜尋引擎要用到中文分詞,所以非常重要 這完全是廢話,說了等於沒說。搜尋引擎又為什麼要分詞呢?其實一般意思上指的分詞是比較狹隘的意思,指中文的詞是怎樣劃分的。因為中文沒有空格,所以要理解一篇文 章,你首先當然要切分...

為什麼要重構

在現實工作中,重構 更多被用來成為彌補缺陷 增加功能 修改設計等工作,而很多人潛意識裡也認為重構就是修改 重寫 而這往往曲解了重構的本意。重構是乙個過程,是建立在不違背外在行為的前提下,對 進行修改,改進程式的內部結構。重構不等於重新設計,軟體工程裡一定要先進行設計,再進行編碼,而如果你在之後對設計...