GPU每一幀可以繪制的像素有一個最大限制(就是所謂的fill rate),這個情況下可以輕易地繪制整個屏幕的所有像素。但是如果由于重疊圖層的關(guān)系需要不停地重繪同一區(qū)域的話,掉幀就可能發(fā)生了。
GPU會放棄繪制那些完全被其他圖層遮擋的像素,但是要計算出一個圖層是否被遮擋也是相當復(fù)雜并且會消耗處理器資源。同樣,合并不同圖層的透明重疊像素(即混合)消耗的資源也是相當客觀的。所以為了加速處理進程,不到必須時刻不要使用透明圖層。
任何情況下,你應(yīng)該這樣做:
這樣做減少了混合行為(因為編譯器知道在圖層之后的東西都不會對最終的像素顏色產(chǎn)生影響)并且計算得到了加速,避免了過度繪制行為因為Core Animation可以舍棄所有被完全遮蓋住的圖層,而不用每個像素都去計算一遍。
如果用到了圖像,盡量避免透明除非非常必要。如果圖像要顯示在一個固定的背景顏色或是固定的背景圖之前,你沒必要相對前景移動,你只需要預(yù)填充背景圖片就可以避免運行時混色了。
如果是文本的話,一個白色背景的UILabel(或者其他顏色)會比透明背景要更高效。
最后,明智地使用shouldRasterize屬性,可以將一個固定的圖層體系折疊成單張圖片,這樣就不需要每一幀重新合成了,也就不會有因為子圖層之間的混合和過度繪制的性能問題了。
-
gpu
+關(guān)注
關(guān)注
28文章
4921瀏覽量
130812 -
Core
+關(guān)注
關(guān)注
0文章
175瀏覽量
43493 -
編譯器
+關(guān)注
關(guān)注
1文章
1657瀏覽量
49970
原文標題:GPU繪圖:如何應(yīng)對混合和過度繪制?
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
HarmonyOS實戰(zhàn)開發(fā)-如何通過BlendMode屬性來實現(xiàn)掛件和圖片的混合
***如何根據(jù)底視圖繪制封裝庫
繪制PCB的3D視圖和其他的一些特殊需求
單個GPU上不支持混合配置文件嗎?
如何使用CAD來繪制軸測圖和三視圖?
MATLAB高級圖形繪制技術(shù)
MATLAB高級圖形繪制技術(shù)
基于GPU的點模型實時繪制
醫(yī)學層析圖像實時體繪制
OrCAD教程:如何添加footprint屬性 如何生成netlist

數(shù)據(jù)庫教程之索引和視圖的詳細資料概述免費下載

變精度下不完備混合數(shù)據(jù)如何進行增量式屬性約簡

評論