OpenGL入門4 三角

2021-10-07 13:16:07 字數 2000 閱讀 1742

頂點陣列物件:vertex array object,vao

頂點緩衝物件:vertex buffer object,vbo

索引緩衝物件:element buffer object,ebo或index buffer object,ibo

將3d座標轉換為2d座標

將2d座標轉變為實際的有顏色的畫素

用於管理gpu的記憶體`

unsigned

int vbo;

glgenbuffers(1

,&vbo)

;//生成乙個緩衝物件

//opengl允許我們同時繫結多個緩衝,只要它們是不同的緩衝型別

glbindbuffer

(gl_array_buffer,vbo)

;//繫結緩衝到當前上下午的gl_array_buffer目標上,此後我i們使用的人格緩衝呼叫(在gl_array_buffer目標上的)都會用來設定當前繫結的緩衝(vbo)

glbufferdata

(gl_array_buffer,

sizeof

(vertices)

,vertices,gl_static_draw)

//將使用者定義的資料複製到緩衝中

//引數說明

//第乙個引數:目標快取的型別

//第二個引數:傳輸資料的大小(位元組)

//第四個引數:指定顯示卡如何管理資料 gl_static_draw 資料不變或幾乎不變;gl_dynamic_draw 資料會被改變很多;gl_stream_draw 資料每次繪製時都會改變

頂點著色器允許我們指定任何以頂點屬性為形式的輸入。這使其具有很強的靈活性的同時,意味著我們必須手動指定輸入資料的哪乙個部分對用於頂點著色器的哪乙個頂點屬性。所以我們必須在渲染前指定opengl該如何解釋頂點資料。

glvertexattribpointer(0

,3,gl_float,gl_false,3*

sizeof

(float),

(void*)

0);//引數1:要配置的頂點屬性

//引數2:頂點屬性的大小

//引數3:資料的型別

//引數3:是否需要標準化

//引數5:步長,連續的頂點屬性組之間的間隔

//引數6:起始位置偏移量

//每個頂點屬性從乙個vbo管理的記憶體中獲得它的資料,而具體從那個vbo獲取則由glvertexattribpointer呼叫時繫結到gl_array_buffer的vbo決定

glenablevertexattribarray(0

);//啟用頂點屬性

頂點陣列物件可以想頂點緩衝物件那樣被繫結,任何隨後的頂點屬性呼叫都會儲存在這個vao中。好處時,當配置頂點屬性指標時,你只需要將那些呼叫執行一次,之後在繪製物體的時候只需要繫結相應的vao就行了。

頂點陣列物件儲存以下內容:

uniform變數時全域性的。全域性意味著uniform比那零必須在每個著色器程式物件中都是獨一無二的,而且它可以被著色器程式的任意著色器在任何階段訪問,

無論你把uniform值設定成什麼,uniform會一直儲存它們的資料,知道它們被重置或更新

//cpu中設定uniform變數的值

int vertexcolorlocation=

glgetuniformlocation

(shaderprogram,

"ourcolor");

//查詢uniform變數的位置

gluserprogram

(shaderprogram)

;gluniform4f

(vertexcolorlocation,

0.0,greenvalue,

0.0,

1.0f);

/設定

三角雛形 4

檔名稱 123.cpp 作 者 隋宗濤 完成日期 2016年5月8日 版 本 號 v1.0 問題描述 設計乙個三角形類,使用複製建構函式,能用乙個已有的三角形物件,複製出新的三角形物件 輸入描述 無 程式輸出 include includeusing namespace std class doub...

OpenGL畫三角形

修改paintgl函式 void nehewidget paintgl 清楚螢幕和深度快取 glclear gl color buffer bit gl depth buffer bit 重置當前的模型觀察矩陣 glloadidentity gltranslatef 1.5,0.0,6.0 開始繪製...

OpenGL畫三角形

修改paintgl函式 void nehewidget paintgl 清楚螢幕和深度快取 glclear gl color buffer bit gl depth buffer bit 重置當前的模型觀察矩陣 glloadidentity gltranslatef 1.5,0.0,6.0 開始繪製...