OpenGL學習筆記 動畫基本概念

2021-05-26 22:19:55 字數 1331 閱讀 4101

幀速:

一秒鐘展現的畫面超過24幅,人眼就會以為是連續的。

平時**的電視,一般是25到30幅之間。

對乙個正常人來說,每秒60到120幅圖畫是最合適的,速度過快,人眼就反應不過來了。

換而言之,整個動畫的速度,往往取決於顯示時間最慢的那個畫面。

如果用c語言偽**來描述這一過程,就是:

for(i=0; i

這個wait很重要,用於保證勻速。

計算幀數最簡單的方法:統計兩次畫畫的時間差就可以得到。

雙緩衝:

雙緩衝就是指先把在記憶體中畫好,再直接顯示到螢幕上。很自然的想法。如果不採用雙緩衝,直接在螢幕上畫,會導致只畫了某幅圖的一半的時候就被觀眾看到。而後面雖然他把畫補全了,但觀眾的眼睛卻又沒有反應過來,還停留在原來那個殘缺的畫面上。也就是說,有時候觀眾看到完整的圖象,有時卻又只看到殘缺的圖象,這樣就造成了螢幕的閃爍。

注意,雙緩衝並不會提公升速度,相反,多了個交換指標的動作,理論上講還會降低速度,雙緩衝只是保證了畫面的完整性,不會出現殘缺的影象。

絕大多數平台都支援雙緩衝技術

垂直同步:

垂直同步是指,只有在顯示器重新整理的時候,才把繪製好的傳輸出去顯示。

好處是,計算機就不必去繪製大量的根本就用不到的圖象了。如果顯示器的重新整理率為85hz,則計算機一秒鐘只需要繪製85幅圖象就足夠。由於計算機的處理速度往往很快,如果不採用垂直同步,計算機會繪製很多無法顯示的。還可能帶來一些負面影響(例如,顯示器只重新整理到一半時,需要繪製的內容卻變化了,由於顯示器是逐行重新整理的,於是顯示器上半部分和下半部分實際上是來自兩幅畫面)

缺點是,容易造成跳幀。如果重新整理頻率為60hz,則在繪製比較簡單的場景時,繪製一幅圖畫需要的時間很段,幀速可以恆定在60fps(即60幀/秒)。如果場景變得複雜,繪製一幅圖畫的時間超過了1/60秒,則幀速將急劇下降。如果繪製一幅圖畫的時間為1/50,則在第乙個1/60秒時,顯示器需要重新整理了,但由於新的圖畫沒有畫好,所以只能顯示原來的圖畫,等到下乙個1/60秒時才顯示新的圖畫。於是顯示一幅圖畫實際上用了1/30秒,幀速為30fps。(如果不採用垂直同步,則幀速應該是50fps)如果繪製一幅圖畫的時間更長,則下降的趨勢就是階梯狀的:60fps,30fps,20fps,……(60/1,60/2,60/3,……)如果每一幅圖畫的複雜程度是不一致的,且繪製它們需要的時間都在1/60上下。則在1/60時間內畫完時,幀速為60fps,在1/60時間未完成時,幀速為30fps,這就造成了幀速的跳動。這是很麻煩的事情,需要避免它——要麼想辦法簡化每一畫面的繪製時間,要麼都延遲一小段時間,以作到統一。

幾乎所有的顯示卡都支援「垂直同步」這一功能。垂直同步是系統性質,可以開啟或關閉,預設自動同步。

docker學習筆記 一 docker 基本概念

作為一種新興的虛擬化方式,docker 跟傳統的虛擬化方式相比具有眾多的優勢。首先,docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機器方式要快得多。其次,docker 對系統資 源的利用率很高,一台主機上可以同時執行數千個 docker 容器。容器除了執行其中應用外,基本不消耗額外的系統資...

OpenGL學習筆記

我是一名ios開發者,opengl是乙個比較重要的技術。所以就此開啟我的菜鳥之路。opengl open graphics library 是乙個跨程式設計語 言 跨平台的程式設計圖形程式接 它將計算機的資源抽象稱為乙個個opengl的物件,對這些資源的操作抽象為乙個的opengl指令.direct...

OpenGL學習筆記

數學基礎 叉積mv矩陣 文章內容主要來自 計算機圖形學程式設計 使用opengl和c 光柵化過程確定了用以顯示3個頂點所確定的三角形的所有畫素需要繪製的位置 光柵化過程開始時先對三角形的每對頂點進行插值 如果光柵化過程到此為止,那麼呈現出的影象將會是線框模型 使用 glpolygonmode gl ...