[OpenGL]OpenGL基本語法

1.OpenGL函數的命名規則

詳細的命名規則巴拉巴拉的,就不寫了(實際上寡人就是懶),但是不寫又感覺不好意思,畢竟標題都寫了( 那啥都脫了你給我看這個??),既然這樣,那就上個例子:

老闆來杯拿鐵,不加奶

在這裏插入圖片描述

2.OpenGL數據類型

在這裏插入圖片描述
哎呦,這一大堆的東西,看的寡人頭都大了,腦闊疼。。。
看到這,肯定會有小哥哥或者小姐姐心想,明明C/C++裏面就有int byte float這亂七八糟一大頓的類型,爲麼斯OpenGL還要自己定義一套呢?
晚上翻來覆去睡不着,寡人掐指一算,夜觀星象,思前想後,得出結論,因爲OpenGL需要跨平臺,而每個平臺間的數據類型大小長度不一樣,爲了統一標準,OpenGL就自己定義了一套規則(放蕩不羈愛自由),反正用了這個類型就是這個大小,不管是哪個平臺。。。
OpenGL:你瞅我幹啥
平臺:瞅你咋地,咬我呀
OpenGL:不要以爲你瞅我,給我眼神暗示就會改成跟你一樣的數據類型,獻身都沒用,哇哈哈

3.OpenGL基本語法

①每個頂點有x,y,z三個座標值,有時會出現第四個座標值w

我們可以根據後綴不同,傳入不同的參數(投其所好,撩妹必備啊,手動滑稽)
例如:
後綴爲f,代表float
glVertex3f(3.0f, 4.0f, 5.0f)
後綴爲fv,代表float型數據
GLfloat v[3]={3.0f, 4.0f, 5.0f};
glVertex3fv( v );

②顏色值有 4 個分量: Red, Green, Blue and Alpha.(RGBA)

glColor4f(1.0f, 0.0f, 0.0f, 0.5f);
glColor3ub(255, 0, 0);

4.OpenGL基本圖元類型

在這裏插入圖片描述
忽略左下角帥氣的小哥哥,畢竟有點帥,畢竟寡人有點懶,能少寫就少些
GL_POINTS 點
GL_LINES 線段
GL_LINE_STRIP 線段帶,一條條線連在一起
GL_LINE_LOOP 線段行成閉合迴路
GL_TRIANGLE_STRIP 三角形帶
GL_TRIANGLES 三角形
GL_TRIANGLE_FAN 扇形
從3.1版本後吧,OpenGL就把GL_POLYGON,GL_QUADS,GL_QUAD_STRIP三個基本類型取消了,多邊形都可以用三角形拼
三個類型表示,再也得不到寵幸了,三角形,你個小碧池!!!!

5.OpenGL基本編程模式

main( )
{
設置顯示模式;
初始化窗口;
創建窗口;
設置一系列回調函數;
啓動主循環;
}

回調函數:(特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應)
簡單來說就是,針對於某個時間特定執行的響應

例如:
①display()
②reShape()
③鍵盤,鼠標響應函數


回調函數display()
設置繪製相關的參數,完成繪製 glutDisplayFunc(display); ----說明當接收到重繪消息時調用此 函數
回調函數myReshape()
設置投影變換和視口變換的參數
glutReshapeFunc(myReshape)
關於鍵盤的回調函數 。
glutSpecialFunc(processSpecialKeys);
glutKeyboardFunc(processNormalKeys);

總結一下,OpenGL繪製時,是一個大循環,通過消息響應機制,什麼消息響應什麼方法,來完成某種操作

附帶,敲黑板敲黑板了!!!!!!
我們經常看到有glutIdleFunc(display),這就是重繪,定時調用display,就是自動操作
當然我們也可以用其他的glutPostRedisplay( ),想要重繪的時候發消息,比如說我們旋轉了某個物體,在旋轉之後就需要發送這個消息,召之即來揮之即去

6.OpenGL是一個狀態機

整個繪製操作會按照固定的流程進行,如同一條流水線
OpenGL函數只是用來設置這條流水線的一些狀態參數,而並不是用來真正執行繪製操作的

忙活半天,其實我們只是流水線上的操作員,負責投食,至於在哪喫這些食物,用什麼方式喫,那是別個的事情,淚奔~~~~~~

end

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