圖像渲染的過程
圖像 => GPU將圖片解碼 => GPU進(jìn)行圖像渲染 => 存儲到幀緩存區(qū) => 視頻控制器進(jìn)行讀取幀緩存區(qū)信息 => 數(shù)模轉(zhuǎn)化 => 顯示器逐行掃描顯示
圖像渲染經(jīng)常出現(xiàn)的問題
圖像撕裂
- 原因 - 視頻控制器顯示速度小于GPU處理圖形的速度
當(dāng)?shù)谝粠瑘D像掃描到某個(gè)位置時(shí)德迹,GPU拿到新的數(shù)據(jù)并緩存到幀緩沖區(qū),這個(gè)時(shí)候視頻控制器從幀緩沖區(qū)掃描的是新拿到的一幀的圖像冠王,最后就形成了斷層的情況炕倘,也就是圖像撕裂 - 解決方案 - 目前采用的是垂直同步信號Sync+雙緩存區(qū)刘离,這種方案并沒有從根本解決問題螃诅,只是避免了圖像撕裂出現(xiàn)的現(xiàn)象
- 垂直同步 - 就是通過加鎖來降低顯卡寫入幀緩存區(qū)的速度驳规,保證在當(dāng)前讀取的幀數(shù)據(jù)結(jié)束之前揪胃,不會讀取下一幀的數(shù)據(jù)斥赋。
當(dāng)我們開啟垂直同步信號后缰猴,顯卡繪制3D圖形前會等待垂直信號,當(dāng)該信號到達(dá)時(shí)疤剑,顯卡開始繪制3D圖像滑绒,如果顯卡性能好,在下一個(gè)垂直同步信號到來之前已經(jīng)完成了對該幀的渲染隘膘,顯卡就會暫停處理疑故,等下個(gè)垂直信號到來后才開始渲染下一幀。 - 雙緩存區(qū) - 采用兩個(gè)幀緩存區(qū)進(jìn)行存儲弯菊,當(dāng)屏幕顯示其中一個(gè)緩存區(qū)的時(shí)候纵势,另一個(gè)緩存區(qū)繼續(xù)等待下一個(gè)緩存結(jié)果,兩個(gè)緩存區(qū)一次進(jìn)行交替
- 出現(xiàn)的新問題 - 掉幀
掉幀
掉幀就是同一幀的數(shù)據(jù)被重復(fù)顯示
- 原因 - 就是當(dāng)前屏幕顯示的是A管钳,在收到垂直信號的時(shí)候钦铁,CPU和GPU處理的B還未準(zhǔn)備好,此時(shí)屏幕顯示的仍然是A
-解決方法 - 采用三緩存區(qū)才漆,無法根治牛曹,只能降低出現(xiàn)的概率
生活如此美好,今天就點(diǎn)到為止醇滥。黎比。。