一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

VSync信號

 astrotycoon 2018-03-28


http:///2017/05/21/VSync%E4%BF%A1%E5%8F%B7/


       在我們詳細分析SurfaceFlinger之前要了解一下VSync信號,為下一節(jié)分析Vsync工作原理打下基礎(chǔ)。

VSync信號相關(guān)

       首先我們要了解以下幾個概念:

屏幕刷新率

       即 Refresh Rate 或 Scanning Frequency,單位赫茲/Hz,是指設(shè)備刷新屏幕的頻率,該值對于特定的設(shè)備來說是個常量,如 60hz。

       每一臺CRT顯示器都有自己的刷新率,其單位是Hz,其數(shù)值是顯示器每秒鐘更新畫面的次數(shù)。不同的顯示器支持再不同分辨率下的不同刷新率。它的范圍可以從低到60高到100。注意它不是你游戲中所提到的那個FPS。如果你設(shè)置了一個特定的刷新率,顯示器將一直按照這個速率刷新畫面。甚至畫面沒有任何的改變。
       液晶顯示器就不同了。LCD的每個像素在被告知改變的時候?qū)⒁恢笔橇林?。他們不需要刷新。但是因為VGA(或是DVI)的工作原理,LCD不得不從顯示卡那里按一定的速率得到新的新畫面。這就是雖然LCD不必要更新,但是他還是有自己的刷新率。

       如下圖,屏幕的刷新過程是每一行從左到右(行刷新,水平刷新,Horizontal Scanning),從上到下(屏幕刷新,垂直刷新,Vertical Scanning)。當整個屏幕刷新完畢,即一個垂直刷新周期完成,會有短暫的空白期,此時發(fā)出 VSync 信號。所以,VSync 中的 V 指的是垂直刷新中的垂直/Vertical。
       (顯示器的掃描方式分為“逐行掃描”和“隔行掃描”兩種。逐行掃描比隔行掃描擁有列穩(wěn)定顯示效果。早期的顯示器因為成本所限,使用逐行掃描方式的產(chǎn)品要比隔行掃描的貴許多,但隨著技術(shù)進步,隔行掃描顯示器現(xiàn)在已經(jīng)被淘汰。我們可以翻一翻《電視原理》)

屏幕刷新過程

       對于一個特定的設(shè)備,幀率和刷新頻率沒有必然的大小關(guān)系。

幀率

       即 Frame Rate,單位 fps,是指 gpu 生成幀的速率,如 33 fps,60fps,越高越好。

       我想這里的每一人都明白FPS。它顯示顯示卡在每秒鐘可以描畫多少畫面。這顯然是越高越好。但是對于快速變化的游戲而言,你的FPS很難一直保持同樣的數(shù)值,他會隨著你所看到的顯示卡所要描畫的畫面的復(fù)雜程度而變化。

VSync

       安卓系統(tǒng)中有 2 種 VSync 信號:屏幕產(chǎn)生的硬件 VSync 和由 SurfaceFlinger 將其轉(zhuǎn)成的軟件 Vsync 信號。后者經(jīng)由 Binder 傳遞給 Choreographer。
       硬件 VSync 是一個脈沖信號,起到開關(guān)或觸發(fā)某種操作的作用。

顯示器參數(shù)

       TFT LCD 有 vsync,hsync,hspw,hbpd,hfpd, vspw,vbpd, vfpd 等參數(shù),這些參數(shù)都是由以前的 CRT(陰極射線顯像管)帶過來的, 而 TFT 液晶跟 CRT 顯示方法根本不同, 至于為什么這些參數(shù)也會引入到 TFT 中,大概是因為VGA(或是DVI)工作原理,上文提到過。
       這網(wǎng)站有更權(quán)威的描述 http://www./HOWTO/2.html ,然后是英文。。。

       CRT 側(cè)面看是個漏斗狀的真空的東東, 根部就是電子槍, 打出的電子撞擊前面的玻璃面上的熒光物質(zhì), 熒光物發(fā)光. 控制電子槍按規(guī)律射出電子, 逐行的打到熒光物質(zhì)上, 打完一行(也即掃描完一行), 就回頭掃描下一行….. 掃描完一個顯示屏所有的行后, 就是一幅完整的畫面了, 稱為一幀(frame), 掃描過程如果非常快, 人眼看到是一幅完整畫面, 但實際是一個個點發(fā)不同光組成的. 掃描得慢時, 就會覺得閃爍了(以前聽老師講課, 說在他們的年代, 能明顯看到一行一行刷過的壯觀場景)。
       一幀掃描完, 再回頭從第一行開始繼續(xù)掃描, 重復(fù)過程. 看到的就是持續(xù)在顯示的畫面了(實際上, 電子的運動軌跡是由磁場控制的, 電子槍沒有機械的運動, 為好理解, 就當是電子槍做了機械運動吧)。

       描述方式多數(shù)顯示器選擇從左上角開始, 從左至右, 到了右邊界, 再偏轉(zhuǎn)到左邊界的下一行, 這是所謂的”Z”型掃描。類似地掃描完最后一幀時, 要偏轉(zhuǎn)回左上角起始處, 準備掃描下一幀。這個上面那一幅圖描述過了。

       (科普一下,ignore it。start------)

  • HSYNC 信號用于告訴電子槍該掃描下一行了, 即要轉(zhuǎn)到下一行起始處了;
  • VSYNC 信號告訴電子槍該顯示下一幀了, 即該轉(zhuǎn)回左上角起始處了;

       H for Horizontal, V for vertical。在這里 Hsync, Vsync 兩者各表示一種信號, 分別由 HSPW 及 VSPW 兩個參數(shù)確定信號持續(xù)時間, 也就是脈沖的寬度.

       在掃描一行中, 首先

  1. HSYNC 脈沖信號為高電平, 一發(fā)出此信號, 電子槍迅速移回左邊界, 期間電子槍不發(fā)射電子.
  2. 在 HSYNC 信號持續(xù)時間上的某點, 電子槍開始再次向右掃描了, 等 HSYNC 信號結(jié)束, 表示該開始顯示下一行的數(shù)據(jù)了, 電子槍又要開始發(fā)射電子.
  3. 在HSYNC 信號結(jié)束與開始顯示數(shù)據(jù)之間, 可以插入一段延時(由 HBPD 參數(shù)控制)讓顯示屏仍然不顯示有效數(shù)據(jù)(效果就是黑色), 是為顯示屏左邊框.
  4. 到 HFPD 結(jié)束, 電子槍才可以發(fā)射電子, 顯示該行的有效數(shù)據(jù).
  5. 顯示完畢. 又該開始發(fā)出 HSYNC 信號了. 在一行中有效數(shù)據(jù)掃描完畢與 HSYNC 信號發(fā)出之間也插入一段延時 HFPD, 是為顯示屏右邊框,之后, 就是重復(fù)過程了.

       因此, 顯示一行時序為: HSPW -> HBPD -> 掃描數(shù)據(jù) -> HFPD .

       類似地, 垂直掃描一幀的時序:VSPW -> VBPD -> 掃描有效行 -> VFPD .

       為什么要有邊框(vbpd, vfpd, hbpd, hfpd)? 按上邊貼出網(wǎng)頁的說法:
       Usually, one doesn’t use that feature nowadays, as we have tunable monitors that allow stretching the mode to the physical limits of the monitor.
       我的理解是:確實是以前的顯示器調(diào)整顯示屏邊界用的,而新的顯示有調(diào)整能力了, 所以不再需要刻意關(guān)注了,但術(shù)語被保留了下來.

舉個栗子

       對于 TFT LCD, 但這些參數(shù)作用是同樣的. 但如何確定 ? TFT 的 LCD 的 datasheet 中一定得標有。
       如型號 WXCAT35-TG3 3.5 寸的液晶中有表如下:

LCD參數(shù)表

       對照下邊的時序圖(注: 時序圖的 Vsync, Hsync 信號(紅框圈出的)跟上邊講的有點出入, 信號都是低電平, 而非高電平, 因此編程時要設(shè)置信號反相, 如s3c244a 的 LCDCON5的INVLINE 及 INVFRAME 即是干這活的):

同步信號時序

  • tvp 即 VSPW
  • tvb 即 VBPD
  • tvf 即 VFPD
  • thp 即 HSPW
  • thb 即 HBPD
  • thf 即 HFPD

       參考的時鐘就是 CLK, 一個 CLK 時鐘, 完成一個像素點的顯示。

       計算幀頻率(刷新頻率)的方法就是所有的像素點跟邊沿(邊框,hbpd 之類),同步脈沖的時間相加, 結(jié)果就是顯示完整一幀所需時間, 其倒數(shù)即是幀頻率。

Linux 的 LCD 驅(qū)動

       LCD 驅(qū)動主要得完成兩部分, 一是跟 framebuffer 注冊驅(qū)動; 二是設(shè)置 LCD 控制器的寄存器, 以適配 LCD。
       struct fb_info 是關(guān)鍵, 有顯示驅(qū)動的所有信息, 要拿此結(jié)構(gòu)跟 framebuffer 注冊, 代表著本驅(qū)動, 該結(jié)構(gòu)定義在 ,在驅(qū)動程序中, 主體部分就是實現(xiàn) struct fb_info .
       在Android SurfaceFlinger 學(xué)習(xí)之路(一)—-Android圖形顯示之HAL層Gralloc模塊實現(xiàn)中提到過這一部分。
       在該結(jié)構(gòu)中, 以下定義的三個字段也是比較重要的, 要填一些數(shù)據(jù)入去:

1
2
3
struct fb_var_screeninfo var;   /* Current var */
struct fb_fix_screeninfo fix;   /* Current fix */
struct fb_ops *fbops;

       struct fb_fix_screeninfo 里定義的 pixclock 是像素點的周期, 單位是皮秒, 數(shù)值等于像素點顯示頻率的倒數(shù). 如上圖貼出的表格中, Dclk 那行中, 6.4 Mhz 就是頻率, 頻率倒數(shù)即為周期, 換算出來為 156250 ps, 約為表中給出的 156 ns.

       驅(qū)動具體的實現(xiàn), 要看開發(fā)板對應(yīng)的驅(qū)動源碼文件, 一般位于 kernel_src/drivers/video/ 下,我們以前下的Android源碼,找到對應(yīng)設(shè)備分支下的,應(yīng)為位于kernel/{branch}/drivers/video/吧。

簡單描述

       在手機平臺,LCD,Camera,TV的接線上,都會用到PCLK,VSYNC和HSYNC這三個信號。可見這三個信號和顯示關(guān)系非常大。首先我們先看這三個信號的作用:

  • PCLK:有些方案給他起名字叫:DotCLK。是像素點同步時鐘信號。也就是每個PCLK對應(yīng)一個像素點。
  • VSYNC:是場同步信號。以高電平有效為例,VSYNC置高直到被拉低,這個區(qū)段所輸出的所有影像數(shù)據(jù)組成一個frame。
  • HSYNC:是行同步信號。就是在告訴接收端:“HSYNC”有效時段內(nèi)接收端接收到的所有的信號輸出屬同一行。

       若要顯示一個640x480的畫面,顯示不正確的時候,若量PCLK,VSYNC和HSYNC這三個信號,就可以知道這三個信號配置是否有問題,一般來講,這種情況是有公式的:

  • VSync = HSYNC x 320;
  • Hsync = PCLK x 640;

       sensor的同步信號可以簡單的理解為sensor向其信號接收端所發(fā)送的宣告信號。比如HSYNC,就是sensor這告訴接收端:“HSYNC”有效時段內(nèi)sensor所有的信號輸出屬同一行。VSYNC同理,以高電平有效為例,VSYNC置高直到被拉低,這個區(qū)段sensor所輸出的所有影像數(shù)據(jù)組成一個frame。同步信號的頻率決定于pixel clock,比如一行有640個pixel,那么HSYNC的頻率為:PCLK/(640+dummy);Vsync同理。

       (科普結(jié)束,ignore it,too。end------)

VSync 信號的作用

tearing 畫面撕裂

       首先,我們來看下,沒有引入 VSync 時,屏幕顯示圖像的工作流程。

單緩沖

       如上圖,CPU/GPU 向 Buffer 中生成圖像,屏幕從 Buffer 中取圖像、刷新后顯示。這是一個典型的生產(chǎn)者——消費者模型。理想的情況是幀率和刷新頻率相等,每繪制一幀,屏幕顯示一幀。而實際情況是,二者之間沒有必然的大小關(guān)系,如果沒有鎖來控制同步,很容易出現(xiàn)問題。

       所謂”撕裂”就是一種畫面分離的現(xiàn)象,就象你照一張照片,在旋轉(zhuǎn)哪怕一度再照一張照片,然后把兩張照片的從中間裁開,用一張照片的上半部與另一張的下半部對接起來。這樣得到的畫像雖然相似但是上半部和下半部確實明顯的不同。這就被稱之為視覺現(xiàn)實上的撕裂。它不會一直從中間分開,它可能靠近上面也可能下面,分離點可能在屏幕上下移動,也可能在兩點間前后移動。(譯者:原文的作者實在是啰嗦,其實就是畫面移動較快的時候,畫面看上去是兩截。這種現(xiàn)象恐怕打游戲的都看到過,最好玩過PS2游戲的,用模擬器,在比較差的顯卡和CPU上面,撕裂現(xiàn)象更為明顯)。

畫面撕裂

       為什么會發(fā)生這種現(xiàn)象呢?讓我們舉一個特定的例子。讓我們假定你的顯示器的刷新率是75Hz, 你真在玩你最喜歡的游戲,而且你現(xiàn)在有100的FPS.這就意味著你的顯示器每秒更新75次畫面,而你的顯示卡每秒更新100次,比你的顯示器快33%。這就意味著在你的顯示器更新畫面的時間里,顯示卡描畫了1+1/3的畫面。這樣在畫面顯示的時候,那個1/3的畫面就會覆蓋那個完整畫面上部的1/3。在下次的圖像刷新的時候,顯示卡會描畫剩下來得2/3和新的2/3的畫面。這樣,因為屏幕的更新只能跟上畫面更新的2/3,這樣圖像的上部的1/3或是下部的1/3就會和剩下的畫面合不上。如果畫面的變化不大可能不太會注意到這一點,但是如果你快速的環(huán)顧四周那就會非常的明顯。

Double Buffer 雙緩沖

       現(xiàn)在,一個很普遍的誤解就產(chǎn)生了。一些人認為解決這個問題的方法就是簡單設(shè)置一個FPS的限制讓FPS不超過顯示器的刷新率,這樣顯示卡就不會超過75FPS,這樣就可以了。真的嗎?錯!

       在我解釋為什么之前,讓我來講一下雙倍緩沖。雙倍緩沖一種用來減輕撕裂問題,雖然不是很完全。基本上來說你有一個顯示緩沖和一個后備緩沖。當顯示器要顯示畫面的時候,就會從顯示緩沖里“推出”顯示畫面。顯示卡則在后備緩沖里描畫另外一個新畫面,當描畫完成后則將新畫面考入顯示緩沖里。但是這個過程需要時間,如果顯示器的刷新在拷貝過程中進行的話,顯示器上顯示的仍然是個”撕裂”的畫面。

       VSync 通過建立一個不讓在顯示器刷新前將后備緩沖中的畫面拷貝到顯示緩沖中的規(guī)定來解決這個問題。如果FPS高于刷新率的話,沒有問題。后備緩沖的更新完成后,系統(tǒng)處于等待狀態(tài)。當顯示器刷新后,后備緩存考入顯示緩存,顯示卡則可以在后備緩存里描畫新的畫面,這樣就很有效的將你的FPS限制在顯示器的刷新率的范圍內(nèi)。

       為了解決單緩存的“tearing”問題,雙緩存和 VSync 應(yīng)運而生。雙重緩存模型如下圖:

雙緩沖

       兩個緩存區(qū)分別為 Back Buffer 和 Frame Buffer。GPU 向 Back Buffer 中寫數(shù)據(jù),屏幕從 Frame Buffer 中讀數(shù)據(jù)。VSync 信號負責(zé)調(diào)度從 Back Buffer 到 Frame Buffer 的復(fù)制操作,可認為該復(fù)制操作在瞬間完成。其實,該復(fù)制操作是等價后的效果,實際上雙緩沖的實現(xiàn)方式是交換 Back Buffer 和 Frame Buffer 的名字,更具體的說是交換內(nèi)存地址(有沒有聯(lián)想到那道經(jīng)典的筆試題目:“有兩個整型數(shù),如何用最優(yōu)的方法交換二者的值?”),通過二進制運算“異或”即可完成,所以可認為是瞬間完成。(《數(shù)字電路技術(shù)》當中有一章節(jié)應(yīng)該講過運算器還是控制器來著,可以設(shè)計一個異或電路。忘了,回去翻一翻~)

       附加小福利:
       假設(shè)兩個數(shù)x和y,則有:
方法1,算術(shù)運算(加減):
x=x+y; //x暫存兩數(shù)之和
y=x-y; //y為兩數(shù)之和減去y,即原來的x
x=x-y; //x為兩數(shù)之和減去現(xiàn)在的y(原來的x),變成原來的y
方法2,邏輯運算(異或):
x^=y; //x先存x和y兩者的信息
y^=x; //保持x不變,利用x異或反轉(zhuǎn)y的原始值使其等于x的原始值
x^=y; //保持y不變,利用x異或反轉(zhuǎn)y的原始值使其等于y的原始值

       雙緩沖的模型下,工作流程這樣的:
       在某個時間點,一個屏幕刷新周期完成,進入短暫的刷新空白期。此時,VSync 信號產(chǎn)生,先完成復(fù)制操作,然后通知 CPU/GPU 繪制下一幀圖像。復(fù)制操作完成后屏幕開始下一個刷新周期,即將剛復(fù)制到 Frame Buffer 的數(shù)據(jù)顯示到屏幕上。

       在這種模型下,只有當 VSync 信號產(chǎn)生時,CPU/GPU 才會開始繪制。這樣,當幀率大于刷新頻率時,幀率就會被迫跟刷新頻率保持同步,從而避免“tearing”現(xiàn)象。

Jank 掉幀

       注意,當 VSync 信號發(fā)出時,如果 GPU/CPU 正在生產(chǎn)幀數(shù)據(jù),此時不會發(fā)生復(fù)制操作。屏幕進入下一個刷新周期時,從 Frame Buffer 中取出的是“老”數(shù)據(jù),而非正在產(chǎn)生的幀數(shù)據(jù),即兩個刷新周期顯示的是同一幀數(shù)據(jù)。這是我們稱發(fā)生了“掉幀”(Dropped Frame,Skipped Frame,Jank)現(xiàn)象。

       讓我們來看一個另外一個不同的例子。讓我們假定你已經(jīng)玩到了你最喜歡的游戲的最后一關(guān),這個游戲有很好的圖像.你顯示器的刷新率還是在75。但是你的FPS現(xiàn)在只有50了,比刷新率要低33%.這就意味著每次顯示器刷新圖像,你的顯示卡只能畫出下一楨畫面的2/3。讓我們看看它是如何工作的。

  1. 顯示器剛剛更新,第一楨的畫面已經(jīng)拷貝到顯示緩沖,第二楨的畫面的2/3被寫入后備緩沖。
  2. 這時顯示器重新刷新,它會第一次從顯示緩沖里提取第一楨的畫面。然后顯示卡開始完成的第二楨剩下的部分。但是它必須等待,應(yīng)為再下一次刷新之前它是不會上傳的。
  3. 顯示器再次刷新,顯示器不得不第二次從顯示緩沖里提取第一楨的畫面,然后第二楨的畫面被寫入顯示緩沖。顯示卡在后備緩沖中寫入第三楨的2/3。
  4. 等到顯示器刷新,第一次從顯示緩沖里提取第二楨的畫面,顯示卡開始完成的第三楨剩下的部分。然后又是第二次從顯示緩沖里提取第二楨的畫面,然后第三楨的畫面被寫入顯示緩沖。

       如此類推。這樣4次顯示器刷新,我們只能的到2楨的畫面。如果刷新率是75的話,我們只能得到35的FPS.很明顯這個數(shù)值要低于顯示卡可以帶到的50FPS.這主要就是應(yīng)為顯示卡不得不在描畫后備緩沖上浪費時間。而在此過程中,后備緩沖上的畫面是不能被拷貝到顯示緩沖。理論上講,雙緩沖的VSync,FPS將是一組不連續(xù)的整數(shù),其等于刷新率/n,n是正整數(shù)。也就是說,如果你的刷新率是60hz,你能得到的FPS只能是 60,30,20,15,12,10 等等。你可以注意到60到30是一個相當大的差距。只要的顯示卡的FPS在60到30之間,你說得到的真實FPS都將只能等于30!

       如下圖,A、B 和 C 都是 Buffer。藍色代表 CPU 生成 Display List,綠色代表 GPU 執(zhí)行 Display List 中的命令從而生成幀,黃色代表生成幀完成。

Jank

       現(xiàn)在,你明白為什么有人不喜歡它了。讓我們回到一開始的那個例子。你在玩你最喜歡的游戲,刷新率是75HZ,100FPS。你打開VSync.游戲就被限制在75FPS,沒有問題,沒有撕裂圖像,看起來不錯。你到了一個圖像特別復(fù)雜的地方,在不用VSync的時候,你的FPS下降到了60左右。但是你打開了VSync,你的FPS實際就只有37.5。這樣你的游戲突然從75FPS變成了37.5FPS,不管37.5仍然很流暢但是你一定會注意到刷新率突然減少了一半。當讓如果以下變到25FPS的話,實際的現(xiàn)實率可能就只有17.5。本來還可以玩的游戲,就變成了幻燈片。這就是大家不喜歡它的原因。

       如果你的游戲的FPS可以一直穩(wěn)定的大于顯示器的刷新率,VSync是個不錯的東西。但是如果FPS忽大忽小。VSync就是讓人煩的東西。如果你的游戲FPS一直都小于刷新率的話,實際的FPS要遠遠小于顯示卡可以顯示的FPS.看上去就象是VSync降低了你的FPS,但是從技術(shù)角度講,不是應(yīng)為圖像太復(fù)雜,而是因為VSync就是這樣工作的。

Triple Buffer 三緩沖

       雙重緩存的缺陷在于:當 CPU/GPU 繪制一幀的時間超過 16 ms 時,會產(chǎn)生 Jank。更要命的是,產(chǎn)生 Jank 的那一幀的顯示期間,GPU/CPU 都是在閑置的。

       也不是說所有的希望都沒有了?,F(xiàn)在的triple-buffering技術(shù)可以用來解決這個問題。讓我們再來看刷新率75。FPS50的例子。

  1. 第一楨在顯示緩沖,第二楨的2/3在后備緩沖。
  2. 顯示器刷新第一楨第一次被顯示,在后備緩沖里描畫第二楨的剩下的1/3,在第二后備緩沖里描畫第三楨的1/3(因為我們有三級緩沖了)。
  3. 顯示器再次刷新第一楨第二次被顯示,第二楨放入在顯示緩沖,第三楨的的1/3放入后備緩沖,第二后備緩沖里描畫第三楨剩下的2/3。
  4. 接下來顯示器再次刷新的時候,第二楨被顯示,第三楨就可以放入顯示緩沖,這樣我們就可以在3次刷新中得到2楨的畫面。

       也就是刷新率的2/3,也就是50FPS.triple-buffering理論上講可以避免緩沖寫入是帶來的延遲現(xiàn)象,這樣就不會浪費時間。但是triple-buffering并不是適用于所有的游戲。實際上它并不是普及(這個文章可能寫的太早,現(xiàn)在triple-buffering已經(jīng)很普及了),而且它也會影響顯示卡的性能,應(yīng)為它需要更多的顯示內(nèi)存,需要更多時間在內(nèi)存之間降數(shù)據(jù)拷貝來拷貝去。但是triple-buffering確實是一個很好的方法,既可以消除撕裂畫面又可以不像普通VSync一樣影響你的FPS.

       如果有第三個 Buffer 能讓 CPU/GPU 在這個時候繼續(xù)工作,那就完全可以避免第二個 Jank 的發(fā)生了!

三緩沖

       于是就有了三緩存:

三緩沖交換

       工作原理同雙緩沖類似,只是多了一個 Back Buffer。
       需要注意的是,第三個緩存并不是總是存在的,只要當需要的時候才會創(chuàng)建。之所以這樣,是因為三緩存會顯著增加用戶輸入到顯示的延遲時間。如上圖,幀 C 是在第 2 個刷新周期產(chǎn)生的,但卻是在第 4 個周期顯示的。最壞的情況下,你會同時遇到輸入延遲和卡頓現(xiàn)象。

三緩沖局限

       我希望這篇文章是有用的,可以幫出你理解VSync的工作原理。(特別是不再猶豫是否打開VSync)總之,如果沒有triple-buffering的情況下,如何權(quán)衡Vsync的FPS限制和消除撕裂畫面帶來的視覺感受,那將完全取決于你個人的喜好。
       譯者按:如果這篇文章的機理是正確的。triple-buffering也不是萬能的,實際上就是把減少1/2變成了減少1/3而已,如果是FPS恰好卡到了一定的數(shù)值的時候沒有問題,一旦沒有,那就絕對要損失FPS.所以對于那種FPS剛剛超過24的游戲,不管有沒有triple-buffering,都應(yīng)該關(guān).

       所以一定會有人問:液晶顯示器的刷新頻率為何不能調(diào)高?
       這里有一個誤解。
       原來我們使用的是CRT技術(shù)的顯示器,為保證長時間地注視屏幕而眼睛不疲勞,我們一般都會把刷新率調(diào)到75H甚至是85Hz,這是由于CRT技術(shù)的特性決定的,刷新率越高也就意味著圖像越清楚、越穩(wěn)定。但是對于LCD來說,由于液晶板本身并不發(fā)光,只是液晶分子控制光線的偏轉(zhuǎn)或通過,發(fā)光的是背光源,即熒光燈管,在使用的時候即使把刷新率調(diào)到60Hz你也不會感到屏幕在閃爍,“刷新率”對LCD來說已經(jīng)沒有多大意義了,所以在使用液晶顯示器的時候,我們是不必過于苛求刷新率的高低的。

參考

Getting To Know Android 4.1, Part 3: Project Butter - How It Works And What It Added
http://www./2012/07/12/getting-to-know-android-4-1-part-3-project-butter-how-it-works-and-what-it-added/

總結(jié)

       本篇科普一下VSync,下一節(jié)開始分析它在SurfaceFlinger中的工作流程。





    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    免费福利午夜在线观看| 久热香蕉精品视频在线播放| 亚洲精品小视频在线观看| 国产精品欧美在线观看| 五月婷婷综合激情啪啪| 国产日韩中文视频一区| 日本深夜福利视频在线| 91欧美日韩精品在线| 午夜视频在线观看日韩| 国产精品视频久久一区| 免费在线播放不卡视频| 少妇成人精品一区二区| 国产午夜精品美女露脸视频| 沐浴偷拍一区二区视频| 国产精品一区二区有码| 国产级别精品一区二区视频| 国产精品一区二区三区日韩av| 午夜精品久久久99热连载| 久久精品国产在热亚洲| 97人妻精品免费一区二区| 国产又色又爽又黄又大| 丰满熟女少妇一区二区三区| 国产不卡视频一区在线| 五月婷婷综合缴情六月| 日韩免费国产91在线| 亚洲一级在线免费观看| 免费高清欧美一区二区视频| 91免费精品国自产拍偷拍| 日本高清二区视频久二区| 日韩一本不卡在线观看| 中文字幕精品一区二区三| 国产精品不卡免费视频| 大伊香蕉一区二区三区| 欧美一区二区三区视频区| 欧美成人免费一级特黄| 中文字幕亚洲人妻在线视频 | 日韩午夜福利高清在线观看| 日韩欧美精品一区二区三区| 综合久综合久综合久久| 精品亚洲香蕉久久综合网| 亚洲专区中文字幕视频|