番外——深入垂直同步機(jī)制(VSYNC)

Paste_Image.png

<h4>一琢歇、基本概念</h4>

  • 刷新率
    代表屏幕在一秒內(nèi)刷新屏幕的次數(shù),這個(gè)值取決于硬件的固定參數(shù).一般是60Hz,即每16.66ms刷新一次.

  • 幀速率
    代表了GPU在一秒內(nèi)繪制操作的幀數(shù),比如30fps/60fps.在這種情況下,高點(diǎn)的幀速率總是好的.

<h4>二龄捡、工作原理 </h4>
刷新率和幀速率需要協(xié)同工作,才能讓你的應(yīng)用程序的內(nèi)容顯示到屏幕上,GPU會獲取圖像數(shù)據(jù)進(jìn)行繪制,然后負(fù)責(zé)把內(nèi)容呈現(xiàn)到屏幕上,這將在你的應(yīng)用程序的生命周期中周而復(fù)始地發(fā)生.
<h4>三誓沸、協(xié)同工作</h4>
不幸的是,刷新率和幀速率并不是總能夠保持相同的節(jié)奏:
<h6>幀速率比刷新率快的情況</h6>

  • 如果幀速率實(shí)際上比刷新率快,那么就會出現(xiàn)一些視覺上的問題,比如當(dāng)幀速率在100fps而刷新率只有75Hz的時(shí)候,GPU所渲染的圖像并非全都被顯示出來.
  • 舉個(gè)例子, 你拍了一張照片,然后旋轉(zhuǎn)90度再拍一張照片,將兩種圖片的中間剪開并拼接在一起:剪貼在一起這兩張圖有相似之處,但是上面和下面部分有明顯的區(qū)別,這就叫Tearing(撕裂),是刷新率和幀速率不一致的結(jié)果. 當(dāng)你的顯卡正在使用,一個(gè)內(nèi)存區(qū)正在寫入幀數(shù)據(jù)(用來顯示一幀的一個(gè)Buffer),從頂部開始,新的一幀覆蓋前一幀,并立刻輸出一行內(nèi)容.于是,當(dāng)屏幕開始刷新時(shí),實(shí)際上并不知道緩沖區(qū)是什么狀態(tài)(即不知道緩沖區(qū)中的一幀是否繪制完畢,即存在只繪制了一半的情況,另一半還是之前的那幀),因此它從GPU中抓住的幀肯可能并不是完全完整的.
  • 目前Android的雙緩沖(或者三緩沖/四緩沖),這是非常有效的,當(dāng)GPU將一幀寫入一個(gè)被稱為后緩沖的存儲器, 而存儲器中的次級區(qū)域被稱為幀緩沖,當(dāng)寫入下一幀時(shí),它會開始填充后緩沖,而幀緩沖保持不變,現(xiàn)在我們刷新屏幕,它將使用幀緩沖(事先已經(jīng)繪制好),而不是正在處于繪制狀態(tài)的后緩沖,這就是VSYNC的作用.如果在屏幕刷新中,VSYNC,即垂直同步,將會在讓從后緩沖到幀緩沖的拷貝過程保持同樣的復(fù)制操作.
  • GPU的頻率比屏幕刷新率高是正常的,因?yàn)槟愕腉PU刷新會比屏幕刷新快,在這種情況下,當(dāng)屏幕刷新成功,你的GPU將會等待VSYNC信號,直到下一個(gè)VSYNC信號到來時(shí)(即屏幕刷新時(shí)),這時(shí)你的幀速率就可以達(dá)到設(shè)備的刷新率上限. 當(dāng)然這只是理想情況,當(dāng)fps達(dá)到60的時(shí)候,GPU需要在16.66ms內(nèi)準(zhǔn)備好一幀,這對應(yīng)用程序的要求是非常高的.更不用說100fps了…
    <h6>屏幕刷新率比幀速率快的情況 </h6>
  • 如果屏幕刷新率比幀速率快,屏幕會在兩幀中顯示同一個(gè)畫面,當(dāng)這種斷斷續(xù)續(xù)的情況發(fā)生時(shí),你就遇到麻煩了.比如你的幀速率比屏幕刷新率高的時(shí)候,用戶看到的是非常流暢的畫面,但是幀速率降下來的時(shí)候(GPU繪制太多東西的時(shí)候),用戶將會很明顯地察覺到動(dòng)畫卡住了或者掉幀,然后又恢復(fù)了流暢.這通常會被描述為閃屏, 跳幀,延遲.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市士嚎,隨后出現(xiàn)的幾起案子篱竭,更是在濱河造成了極大的恐慌毙籽,老刑警劉巖路狮,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虫啥,死亡現(xiàn)場離奇詭異,居然都是意外死亡奄妨,警方通過查閱死者的電腦和手機(jī)涂籽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砸抛,“玉大人评雌,你說我怎么就攤上這事∶痰浚” “怎么了柳骄?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵团赏,是天一觀的道長箕般。 經(jīng)常有香客問我,道長舔清,這世上最難降的妖魔是什么丝里? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任曲初,我火速辦了婚禮,結(jié)果婚禮上杯聚,老公的妹妹穿的比我還像新娘臼婆。我一直安慰自己,他們只是感情好幌绍,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布颁褂。 她就那樣靜靜地躺著,像睡著了一般傀广。 火紅的嫁衣襯著肌膚如雪颁独。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天伪冰,我揣著相機(jī)與錄音誓酒,去河邊找鬼。 笑死贮聂,一個(gè)胖子當(dāng)著我的面吹牛靠柑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吓懈,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼歼冰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了耻警?” 一聲冷哼從身側(cè)響起停巷,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榕栏,沒想到半個(gè)月后畔勤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扒磁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年庆揪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妨托。...
    茶點(diǎn)故事閱讀 40,438評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缸榛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兰伤,到底是詐尸還是另有隱情内颗,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布敦腔,位于F島的核電站均澳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜找前,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一糟袁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧躺盛,春花似錦项戴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至界斜,卻和暖如春则吟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锄蹂。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工氓仲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人得糜。 一個(gè)月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓敬扛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親朝抖。 傳聞我的和親對象是個(gè)殘疾皇子啥箭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內(nèi)容