OpenGL入門學習之六 動畫的製作

2021-09-30 12:02:07 字數 928 閱讀 7613

想必大家都知道電影和動畫的工作原理吧?是的,快速的把看似連續的畫面一幅幅的呈現在人們面前。一旦每秒鐘呈現的畫面超過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之一,它在一...