2 8 頂點陣列物件

2021-06-29 02:21:53 字數 1157 閱讀 3457

上一節介紹了緩衝區物件,緩衝區就是個記憶體塊,緩衝區物件 = 圖形伺服器中的記憶體塊 + 乙個id。

頂點陣列,是為了減少函式呼叫數量,為了避免共享頂點的冗餘,而將頂點放在陣列中。

那頂點陣列物件呢?頂點陣列物件,就是 頂點陣列 + 乙個id名稱。然後通過這個名稱,來對這個頂點陣列進行訪問。

為了方便在不同的頂點陣列之間進行切換。由於頂點陣列,同乙個型別的只有乙個,所以,當頂點資料不止有乙個陣列的時候,就需要將陣列a繫結到頂點陣列上,使用。用完之後,再將陣列b繫結到頂點陣列上,使用,這樣來回切換,麻煩。而由於頂點陣列物件,可以有多個,每個物件,通過名稱來區分。這樣,假如有兩個頂點陣列,我們申請兩個頂點陣列物件,將兩個頂點陣列,繫結到不同物件上,這樣,使用的時候,就只需要在兩個物件之間切換,不需要來回繫結。

與頂點陣列物件,相關聯的函式有4個,它們分別是glgenvertexarrays,glbindvertexarray,gldeletevertexarrays, glisvertexarray。

這四個函式,和之前的緩衝區物件有點類似,glgenbuffers,glbindbuffer, gldeletebuffers,glisbuffer。

glgenvertexarrays

void glgenvertexarrays(glsizei n, gluint *arrays);

返回n個當前未使用的名字,這些未使用的名字儲存在arrays中。

glbindvertexarray

void glbindvertexarray(gluint array);

啟用對應的array,表示即將進行的操作,作用於array上面。

gldeletevertexarrays

void gldeletevertexarrays(glsizei n, gluint *arrays);

這個和glgenvertexarrays對應,表示刪除arrays中的n個陣列物件。

glisvertexarray

glboolean glisvertexarray(gluint array);

查詢array這個陣列物件,是否正在被使用。如果array是之前glgenvertexarrays()產生的乙個頂點陣列物件的名字,但是隨後沒有刪除,返回gl_true。如果array是0或者乙個並非頂點陣列物件的名字的非零值,返回gl_false。

用頂點陣列繪製立方體

code include include include static glfloat vertices static glfloat vertices static glubyte front static glubyte right static glubyte back static glub...

OpenGL加速渲染 頂點陣列的索引模式

使用頂點陣列時,往往要將所有需要使用的頂點放入陣列中,以便於統一呼叫。比如一條折線 glfloat vpoints 在頂點陣列中,需要對端點1進行2次儲存,因為線段0是由端點0 端點1兩個端點構成,而線段1是由端點1 端點2兩個端點構成,必須順序儲存所有呼叫的點,才可以用gldrawarrays進行...

劍指offer系列28 陣列中的逆序對

這個題我拿到沒什麼好的思路,除了乙個個求的方法之外想不出效率更高的方法。這個題看劍指offer的意思是按照歸併排序的方法做的,順便複習一下歸併排序 看到這個題只要能想到用歸併排序的方法做就已經成功了一半了,其次就是一些細節問題。寫 你又思路,又會將思路用 寫出來才可以。只有思路不會寫 也不行。寫 的...