基本流程
畫(huà)一個(gè)藍(lán)色三角形的過(guò)程:
-
頂點(diǎn)著色器:拿到頂點(diǎn)數(shù)據(jù)哺呜,確認(rèn)頂點(diǎn)位置眠屎。
GLfloat vVerts[] = { -0.5f,0.0f,0.0f, 0.5f,0.0f,0.0f, 0.0f,0.5f,0.0f };
曲面細(xì)分著色器:使幾何體更加順滑之類的操作。
幾何著色器:接收來(lái)自頂點(diǎn)著色器的一個(gè)片元的一組頂點(diǎn)昏滴,然后可以對(duì)其進(jìn)行變換昼窗,可以輸出新的不同類型的片元,也可以增加頂點(diǎn)數(shù)
圖元設(shè)置:設(shè)置為以下其中一個(gè):點(diǎn)敷燎、線段暂筝、連線、環(huán)線硬贯、三角形等焕襟。
剪切:去除視口以外的繪制。
光柵化:如果設(shè)置為三角形饭豹,此步驟會(huì)獲得 三角形所有的像素點(diǎn)鸵赖。
片元著色器:給上面獲取到的像素點(diǎn)上色。
渲染上屏:等待同步信號(hào)拄衰,交換緩沖區(qū)它褪。
圖片是怎么顯示的?
CPU 做圖片解碼
GPU 做視頻解碼
CPU 解碼:一般拿到的是 .jpg 之類的壓縮格式翘悉,要通過(guò) CPU 解碼成 位圖 (未經(jīng)壓縮)列赎。
GPU 紋理混合:經(jīng)過(guò)上述 著色器渲染流程,將最終數(shù)據(jù)放到 幀緩沖區(qū)。
時(shí)鐘信號(hào):垂直同步信號(hào) V-Sync (水平同步信號(hào) H-Sync)
渲染上屏
圖片的強(qiáng)制解壓就是對(duì)圖片進(jìn)行重新繪制包吝,得到新的位圖饼煞,iOS 需要使用 CGBitmapContextCreate∈剑可以看看大佬們是怎么寫(xiě)的砖瞧,參考 YYImage 和 SDWebImage。