OpenGL--動作管理

目前,我在做一個計算機圖形學的project,要求做一個可以移動控制的簡易機器人。因而開始學習OpenGL。

今天,先來研究一下如何給2D/3D圖形添加動作。

一、原理

     1.修改顯示圖形所用的各種參數;

     2.重繪圖形。利用視網膜短暫停留的機制實現圖形的動作

二、實現函數

1.   void glutTimerFunc(unsigned int msecs,void (*func)(int value), value);

     這是一個回調函數,但是隻能執行一次,因而需要在被調用的函數末尾再次調用此定時器回調函數。

2.

      void glNewList(GLuint list,GLenum mode);
      void glEndList(void);
      這對函數可以預先編譯一下需要用來繪圖的命令,存在一個顯示列表裏邊,方便以後重複調用。
3.
      glPushMatrix();glPopMatrix()
      把平移、縮放等操作放在這對函數中間,可以消除上一次的變換對本次變換的影響,使
本次變換是以世界座標系的原點爲參考點進行的。
     關於這個有以下四點解釋:
    1)OpenGL 中的modelview矩陣變換是一個馬爾科夫過程:上一次的變換結果對本次變換有影響,上次modelview變換後物體在世界座標系下的位置是本次modelview變換的起點。默認下,本次變換和上次變換不獨立。
    2)OpenGL物體建模實際上是分兩步進行的。第一步,在世界座標系的原點位置繪製出該物體;第二步,通過modelview變換矩陣對世界座標系原點出的物體進行仿射變換,將該物體移動到世界座標系的目標位置處。
    3)將modelview 變換放在glPushMatrix和glPopMatrix之間可以使本次變換和上次變換獨立。
    4)凡是使用glPushMatrix()和glPopMatrix()的程序一般可以判定是採用世界座標系建模。即世界座標系固定,modelview矩陣移動物體。


    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章