iOS 圖形圖像的顯示和渲染流程

渲染的核心硬件——GPU

左手一個CPU 右手一個GPU,他倆的區別在哪裏?數組

處理器 任務
CPU 運算核⼼、控制核⼼
GPU 專用的繪圖、渲染

顯示?

隨機掃描顯示

光柵掃描的形式

在之前的「大屁股」顯示器時代,使用的是電子槍,將圖像光柵化以後,再將電子逐行打到屏幕上。直到最後一行結束,這一幀圖像纔算顯示完成。可是這一步是很是很是的快,從第一行到最後一行結束,利用人的視覺停留,完成顯示。緩存

光柵掃描的系統結構

顯示的時候遇到畫面撕裂\畫面錯位

光柵掃描的系統結構 中能夠看到,GPU渲染成位圖->幀緩存區->再由顯示控制器刷新->屏幕。 可是屏幕的刷新頻率是固定的,一般是60Hz。若是顯卡的輸出高於60fps,刷新頻率和輸出頻率不一樣步,便會畫面便會撕裂。markdown

解決辦法:網絡

  • 引入 雙緩衝區 :在屏幕上的稱爲屏幕緩衝區,沒有顯示的稱爲離屏緩衝區。在一個緩衝區渲染完成後,經過將屏幕緩衝區和離屏緩衝區交換,實現圖像在屏幕上的顯示。

  • 又引入垂直同步技術: 因爲顯示器的刷新是逐行進行的,所以爲了防止交換緩衝區的時候出現兩個緩衝區的內容,所以交換通常等待顯示器刷新完成的信號(其實就是加鎖,信號來了以後解鎖),在顯示器兩次刷新的間隔中間進行交換,這個信號就是垂直同步信號,這個技術就是垂直同步

圖像/圖像的渲染流程

剛講的是顯示,可是在顯示器顯示以前,必須完成從 數據->位圖 的渲染,最後才送交幀緩衝區等待顯示。 在前一篇博客OpenGL 敲門磚——基礎概念中,咱們已經提到了渲染流程架構

此圖來自網絡

頂點數據(存在內存中,CPU處理)->幾何運算->光柵化->片元/像素->位圖->顯示post

再詳細的分解,就會以下圖所示: 動畫

CPU 處理存儲在內存中的頂點數據(數組)spa

GPU 幾何操做:將頂點數據進行頂點轉換、座標轉換、旋轉平移縮放或者光照計算等處理設計

GPU 頂點着色器處理:將頂點轉成圖元code

GPU 圖元裝配:鏈接信息線條

GPU 光柵化處理轉成柵格化數據

GPU 片元着色器會對柵格化數據的每個像素進行位運算,決定每個像素的顏色。

iOS 的渲染架構

其中,CoreAnimation 在蘋果的設計中,是一個包含:渲染、構建和動畫的複合引擎。

相關文章
相關標籤/搜索