GPU每一幀可以繪制的像素有一個(gè)最大限制(就是所謂的fill rate),這個(gè)情況下可以輕易地繪制整個(gè)屏幕的所有像素。但是如果由于重疊圖層的關(guān)系需要不停地重繪同一區(qū)域的話,掉幀就可能發(fā)生了。
GPU會(huì)放棄繪制那些完全被其他圖層遮擋的像素,但是要計(jì)算出一個(gè)圖層是否被遮擋也是相當(dāng)復(fù)雜并且會(huì)消耗處理器資源。同樣,合并不同圖層的透明重疊像素(即混合)消耗的資源也是相當(dāng)客觀的。所以為了加速處理進(jìn)程,不到必須時(shí)刻不要使用透明圖層。
任何情況下,你應(yīng)該這樣做:
這樣做減少了混合行為(因?yàn)榫幾g器知道在圖層之后的東西都不會(huì)對最終的像素顏色產(chǎn)生影響)并且計(jì)算得到了加速,避免了過度繪制行為因?yàn)镃ore Animation可以舍棄所有被完全遮蓋住的圖層,而不用每個(gè)像素都去計(jì)算一遍。
如果用到了圖像,盡量避免透明除非非常必要。如果圖像要顯示在一個(gè)固定的背景顏色或是固定的背景圖之前,你沒必要相對前景移動(dòng),你只需要預(yù)填充背景圖片就可以避免運(yùn)行時(shí)混色了。
如果是文本的話,一個(gè)白色背景的UILabel(或者其他顏色)會(huì)比透明背景要更高效。
最后,明智地使用shouldRasterize屬性,可以將一個(gè)固定的圖層體系折疊成單張圖片,這樣就不需要每一幀重新合成了,也就不會(huì)有因?yàn)樽訄D層之間的混合和過度繪制的性能問題了。
-
gpu
+關(guān)注
關(guān)注
28文章
4777瀏覽量
129360 -
Core
+關(guān)注
關(guān)注
0文章
175瀏覽量
43020 -
編譯器
+關(guān)注
關(guān)注
1文章
1642瀏覽量
49289
原文標(biāo)題:GPU繪圖:如何應(yīng)對混合和過度繪制?
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
HarmonyOS實(shí)戰(zhàn)開發(fā)-如何通過BlendMode屬性來實(shí)現(xiàn)掛件和圖片的混合
***如何根據(jù)底視圖繪制封裝庫
繪制PCB的3D視圖和其他的一些特殊需求
單個(gè)GPU上不支持混合配置文件嗎?
如何使用CAD來繪制軸測圖和三視圖?
MATLAB高級(jí)圖形繪制技術(shù)
MATLAB高級(jí)圖形繪制技術(shù)
基于GPU的點(diǎn)模型實(shí)時(shí)繪制
醫(yī)學(xué)層析圖像實(shí)時(shí)體繪制
OrCAD教程:如何添加footprint屬性 如何生成netlist
![OrCAD教程:如何添加footprint<b class='flag-5'>屬性</b> 如何生成netlist](https://file1.elecfans.com//web2/M00/A7/41/wKgZomUMQ1yAZgCDAAAc5GNvtAw854.jpg)
數(shù)據(jù)庫教程之索引和視圖的詳細(xì)資料概述免費(fèi)下載
![數(shù)據(jù)庫教程之索引和<b class='flag-5'>視圖</b>的詳細(xì)資料<b class='flag-5'>概述</b>免費(fèi)下載](https://file.elecfans.com/web1/M00/68/C7/pIYBAFvJSh6AMOhFAACk6PIwd6E141.png)
變精度下不完備混合數(shù)據(jù)如何進(jìn)行增量式屬性約簡
![變精度下不完備<b class='flag-5'>混合</b>數(shù)據(jù)如何進(jìn)行增量式<b class='flag-5'>屬性</b>約簡](https://file.elecfans.com/web1/M00/7D/53/o4YBAFwKMLGAImmeAAA37o--xZ0522.png)
評(píng)論