手遊效能之渲染分析1

2022-09-15 09:27:11 字數 2945 閱讀 6383

宣告:本文非原創,**於各**、翻譯貼。大神勿噴

中文翻譯為「圖形處理器」。我們通常就叫它顯示卡。gpu同時也是2d顯示卡和3d顯示卡的區別依據,2d顯示晶元在處理3d影象和特效時主要依賴cpu的處理,稱為「軟加速」;3d顯示晶元是將三維影象和特效處理功能集中在顯示晶元內,也即所謂的「硬體加速」功能。gpu和cpu之間通過ram記憶體進行資料交換。在手機主機板上,gpu晶元一般都是緊挨著cpu晶元的。

以前的智慧型機,基本不帶gpu,所有的軟體、遊戲都是由cpu進行處理,呈現在螢幕上。但是cpu的圖形處理能力很低很低,這也導致了傳統的智慧型手機玩稍微大一點的遊戲往往力不從心,大型3d遊戲更是成為了奢望。

gpu處理的東西 主要是頂點(vertex)和畫素(pixel),這兩東西一般有四個屬性:

vertex: xyzw,就是座標了

pixel:rgba,就是顏色rgb加上透明度alpha通道

紋理的畫素格式是影象儲存在gpu記憶體的方式;cocos2d中預設的畫素格式是rgba8888
1)rgba8888:
紅色通道、綠色通道、藍色通道和alpha 通道各8位。

缺點:但它會占用的記憶體會比16位的紋理多一倍自然的,它的運算速度也是相對較慢的。也就會降低他的fps

2)rgba4444:
紅色通道、綠色通道、藍色通道、alpha通道各4位。

優點:它對每個通道都有不錯的支援,還能保證相對良好的速度和記憶體佔用率,並且透明效率與rgba8888格式的紋理差別不是很大

常用場景:包含有半透明的區域

3)rgb5a1:
紅、綠、藍三色通道各5位,alpha通道僅有1位

優點:它在記憶體占用和速度上表現不錯。

缺點:要麼只能全部是透明畫素,或者全部是不透明的畫素。因為一位的alpha通道的緣故,所以沒有中間值。

常用場景:精靈需要透明度上的表現

4)rgb565:
紅色通道5位,綠色通道6位,藍色通道5位,沒有alpha通道

優點:對於16位的紋理來說,使用rgb565可以獲得最佳顏色質量

檔案格式是影象為了儲存資訊而使用的對資訊的特殊編碼方式,它儲存在磁碟中,或者記憶體中,但是並不能被gpu所識別,因為以向量計算見長的gpu對於這些複雜的計算無能為力。這些檔案格式當被遊戲讀入後,還是需要經過cpu解壓成r5g6b5,a4r4g4b4,a1r5g5b5,r8g8b8,a8r8g8b8等畫素格式,再傳送到gpu端進行使用
紋理格式是能被gpu所識別的畫素格式,能被快速定址並取樣。比如說dds檔案是遊戲開發中常用的檔案格式,它內部可以包含a4r4g4b4的紋理格式,也可以包含a8r8g8b8的紋理格式,甚至可以包含dxt1的紋理格式。在這裡dds檔案有點容器的意味。
1)etc1:
etc1格式是opengl es圖形標準的一部分,並且被所有的android裝置所支援。

擴充套件名為: gl_oes_compressed_etc1_rgb8_texture,不支援透明通道,所以僅能用於不透明紋理。

當載入壓縮紋理時,引數支援如下格式:

a.gl_etc1_rgb8_oes(rgb,每個畫素0.5個位元組)

2)pvrtc:
支援的gpu為imagination technologies的powervr sgx系列。

opengl es的擴充套件名為: gl_img_texture_compression_pvrtc。

當載入壓縮紋理時,引數支援如下幾種格式:

a.gl_compressed_rgb_pvrtc_4bppv1_img (rgb,每個畫素0.5個位元組)

b.gl_compressed_rgb_pvrtc_2bppv1_img (rgb,每個畫素0.25個位元組)

c.gl_compressed_rgba_pvrtc_4bppv1_img (rgba,每個畫素0.5個位元組)

d.gl_compressed_rgba_pvrtc_2bppv1_img (rgba,每個畫素0.25個位元組)

3)atitc:
支援的gpu為qualcomm的adreno系列。   

支援的opengl es擴充套件名為: gl_ati_texture_compression_atitc。

當載入壓縮紋理時,引數支援如下型別的紋理:

a.gl_atc_rgb_amd (rgb,每個畫素0.5個位元組)

b.gl_atc_rgba_explicit_alpha_amd (rgba,每個畫素1個位元組)

c.gl_atc_rgba_interpolated_alpha_amd (rgba,每個畫素1個位元組)

4)s3tc:
也被稱為dxtc,在pc上廣泛被使用,但是在移動裝置上還是屬於新鮮事物。支援的gpu為nvidia tegra系列。

opengl es擴充套件名為:gl_ext_texture_compression_dxt1和gl_ext_texture_compression_s3tc。

當載入壓縮紋理時,的引數有如下幾種格式:

a.gl_compressed_rgb_s3tc_dxt1 (rgb,每個畫素0.5個位元組)

b.gl_compressed_rgba_s3tc_dxt1 (rgba,每個畫素0.5個位元組)

c.gl_compressed_rgba_s3tc_dxt3 (rgba,每個畫素1個位元組)

d.gl_compressed_rgba_s3tc_dxt5 (rgba,每個畫素1個位元組)

由此可見,mali系列gpu只支援etc1格式的壓縮紋理,而且該紋理不支援透明通道,有一定侷限性。

以上壓縮紋理格式每個畫素大小相對a8r8g8b8格式的比例,最高壓縮比是16:1,最低壓縮比是4:1。

對於減小紋理的資料容量有明顯作用,相應在視訊記憶體頻寬上也有明顯優勢,從而提高遊戲的執行效率

手遊效能測試指南

1 前言 隨著手遊3d型別遊戲增多,對機器資源占用越發高,但使用者手中硬體的提公升是乙個不可控且緩慢的過程,為了保證在盡量廣泛的機型上流暢執行,提高遊戲本身的潛在使用者群體,所以手遊客戶端效能審核工作就越發重要,如何做客戶端效能審核,如何快速,專業,準確的做客戶端效能審核是我們需要重點關注 且持續建...

手遊效能測試指南

1 前言 隨著手遊3d型別遊戲增多,對機器資源占用越發高,但使用者手中硬體的提公升是乙個不可控且緩慢的過程,為了保證在盡量廣泛的機型上流暢執行,提高遊戲本身的潛在使用者群體,所以手遊客戶端效能審核工作就越發重要,如何做客戶端效能審核,如何快速,專業,準確的做客戶端效能審核是我們需要重點關注 且持續建...

騰訊手遊效能優化之路

2017 qcon 移動專項最佳實踐 專題講師 何純 圖 2017 qcon全球軟體開發大會現場 經過3 5年的高速發展後,人口紅利正在逐漸消失,ip效應也在減弱 從2016年top10的遊戲來看,主要是競技類和rpg類為主,手遊已逐漸進入到重度的時代,玩法和使用者體驗決定了遊戲的生死,也決定了產品...