想必大家都知道電影和動畫的工作原理吧?是的,快速的把看似連續的畫面一幅幅的呈現在人們面前。一旦每秒鐘呈現的畫面超過24幅,人們就會錯以為它是連續的。
假設某動畫一共有n幅畫面,則它的工作步驟就是:
顯示第1幅畫面,然後等待一小段時間,直到下乙個1/24秒
顯示第2幅畫面,然後等待一小段時間,直到下乙個1/24秒
……顯示第n幅畫面,然後等待一小段時間,直到下乙個1/24秒
結束如果用c語言偽**來描述這一過程,就是:
for(i=0; i
// 太陽、地球和月亮
// 假設每個月都是30天
// 一年12個月,共是360天
static int day = 200; // day的變化:從0到359
void mydisplay(void)
void myidle(void)
int main(int argc, char *ar**)
// 假設每個月都是12天
// 一年12個月,共是360天
static int day = 200; // day的變化:從0到359
double calfrequency()
void mydisplay(void)
void myidle(void)
int main(int argc, char *ar**)
小結:opengl動畫和傳統意義上的動畫相似,都是把畫面一幅一幅的呈現在觀眾面前。一旦畫面變換的速度快了,觀眾就會認為畫面是連續的。
雙緩衝技術是一種在計算機圖形中普遍採用的技術,絕大多數opengl實現都支援雙緩衝技術。
通常都是利用cpu空閒的時候繪製動畫,但也可以有其它的選擇。
介紹了垂直同步的相關知識。
介紹了一種簡單的計算幀速(fps)的方法。
最後,我們列出了乙份完整的天體動畫程式清單。
OpenGL入門學習之OpenGL庫簡介
glu是實用庫,包含有43個函式,函式名的字首為glu。glu 為了減輕繁重的程式設計工作,封裝了opengl函式,glu函式通過呼叫核心庫的函式,為開發者提供相對簡單的用法,實現一些較為複雜的操作。glaux是opengl輔助庫,包含有31個函式,函式名字首為aux。這部分函式提供視窗管理 輸入輸...
OpenGL入門學習
include 太陽 地球和月亮 假設每個月都是30天 一年12個月,共是360天 static int day 200 day的變化 從0到359 void mydisplay void void myidle void int main int argc,char argv 3 關於垂直同步co...
OpenGL入門學習
說起程式設計作圖,大概還有很多人想起tc的 include 吧?但是各位是否想過,那些畫面絢麗的pc遊戲是如何編寫出來的?就靠tc那可憐的640 480解析度 16色來做嗎?顯然是不行的。本帖的目的是讓大家放棄tc的老舊圖形介面,讓大家接觸一些新事物。opengl作為當前主流的圖形api之一,它在一...