日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

从屏幕刷新频率到Unity VSync

發布時間:2023/12/15 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 从屏幕刷新频率到Unity VSync 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

顯示器有一個屬性叫屏幕刷新頻率,它是指每秒刷新屏幕的次數,單位為Hz,一般設置為60Hz。

什么是刷新屏幕呢?我們屏幕是由像素矩陣組成的,其(CRT)顯示圖像的原理是靠電子束從左到右、從上到下逐行激發屏幕內表面的熒光粉單元(像素)來實現的。電子束一次水平方向的掃描叫行掃描,一次完整的掃描就是刷新屏幕,形成的圖像就是一幀。因此60Hz的刷新率也就是每秒60幀,人眼的視覺暫留需要滿足每秒24幀及以上。

顯示器掃描的過程中有兩個重要的概念:HBlank(行消隱)和VBlank(場消隱)。HBlank是指當行掃描到最右端時需要快速返回到下一行的最左端的過程。而VBlank則是指掃描完一幀,準備開始掃描下一幀,掃描線從右下角返回到左上角的過程。這兩個過程的時間間隔中,掃描線需要變得blank,以防止看到一條斜線顯示在屏幕上。

游戲渲染中的VSync(垂直同步)技術就與刷新率和VBlank有關。先說說為什么需要VSync。一般情況下CPU執行游戲邏輯和GPU執行渲染的計算都會快于屏幕的刷新,也就是CPU提交渲染數據和命令到GPU、GPU填充渲染結果到顯存的速度會快于屏幕刷新,因此當屏幕刷新進行的過程中很可能會出現顯存內容被改變的情況,從而造成Tearing(畫面撕裂)。

解決Tearing問題的方案就是VSync。前面提到屏幕刷新的兩幀之間會有一個VBlank,這個間隔硬件就會產生一個VSync的信號,游戲可以在只有收到該信號后再去計算下一幀,這樣就能避免Tearing。實際上,即使在不使用VSync且不會發生Tearing的情況下,由于屏幕刷新率的限制,CPU/GPU的幀率再快對于渲染結果來說并沒有影響,反而是一種冗余計算的浪費。而關閉VSync的好處是可以更快的響應輸入。

Unity在Quality Settings中有個VSync Count屬性可以設置VSync,分別是Don’t Sync(關閉VSync)、Every VBlank(每個VBlank計算一幀)、Every Second VBlank(每兩個VBlank計算一幀)。https://docs.unity3d.com/Manual/class-QualitySettings.html

VSync是需要圖形API(DirectX、OpenGL)支持的,Unity對于關閉了VSync或者VSync的設置不被支持的情況采用了在CPU上同步的方案來維持目標幀率:

void TimeManager::Sync (float framerate)中傳入目標幀率framerate,函數中通過Sleep和循環來控制每幀的耗時,從而控制幀率。

總結

以上是生活随笔為你收集整理的从屏幕刷新频率到Unity VSync的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。