在屏幕成像的過程中累贤,CPU和GPU起著至關(guān)重要的作用。
CPU(中央處理器)
- 加載資源少漆,對象的創(chuàng)建和銷毀臼膏,對象屬性的調(diào)整、布局計算示损、Autolayout渗磅、文本渲染,文本的計算和排版检访、圖片格式轉(zhuǎn)碼和解碼始鱼、圖像的繪制(Core Graphics)都是在CPU上面進行的。
GPU(圖形處理器)
- 紋理的渲染(OpenGL)
GPU是一個專門為圖形高并發(fā)計算而量身定做的處理單元脆贵,比CPU使用更少的電來完成工作并且GPU的浮點計算能力要超出CPU很多医清。
GPU的渲染性能要比CPU高效很多,同時對系統(tǒng)的負載和消耗也更低一些卖氨,所以在開發(fā)中会烙,我們應(yīng)該盡量讓CPU負責主線程的UI調(diào)動,把圖形顯示相關(guān)的工作交給GPU來處理筒捺,當涉及到光柵化等一些工作時柏腻,CPU也會參與進來。
相對于CPU來說系吭,GPU能干的事情比較單一:接收提交的紋理(Texture)和頂點描述(三角形)五嫂,應(yīng)用變換(transform)、混合(合成)并渲染肯尺,然后輸出到屏幕上沃缘。通常你所能看到的內(nèi)容,主要也就是紋理(圖片)和形狀(三角模擬的矢量圖形)兩類蟆盹。
CPU 和 GPU 的協(xié)作
CPU 和 GPU 的協(xié)作.png
要在屏幕上顯示視圖孩灯,需要CPU和GPU一起協(xié)作闺金,CPU計算好顯示的內(nèi)容提交到GPU逾滥,GPU渲染完成后將結(jié)果放到幀緩存區(qū),隨后視頻控制器會按照 VSync 信號逐行讀取幀緩沖區(qū)的數(shù)據(jù),經(jīng)過可能的數(shù)模轉(zhuǎn)換傳遞給顯示器顯示寨昙。
緩沖機制
緩沖機制.png
iOS使用的是雙緩沖機制讥巡。即GPU會預先渲染好一幀放入一個緩沖區(qū)內(nèi)(前幀緩存),讓視頻控制器讀取舔哪,當下一幀渲染好后欢顷,GPU會直接把視頻控制器的指針指向第二個緩沖器(后幀緩存)。當你視頻控制器已經(jīng)讀完一幀捉蚤,準備讀下一幀的時候抬驴,GPU會等待顯示器的VSync信號發(fā)出后,前幀緩存和后幀緩存會瞬間切換缆巧,后幀緩存會變成新的前幀緩存布持,同時舊的前幀緩存會變成新的后幀緩存。