OpenGL中VBO如何與shader聯絡起來

2021-09-11 22:06:08 字數 672 閱讀 4853

關鍵函式:

glvertexattribpointer(0, 3, gl_float, gl_false, 3 * sizeof(float), (void*)0);

第乙個引數:指定我們要配置的頂點屬性。

第二個引數:指定頂點屬性的大小。如頂點屬性是乙個vec3,它由3個值組成,所以大小是3。

第三個引數:指定資料的型別,這裡是gl_float(glsl中vec*都是由浮點數值組成的)。

第四個引數:定義我們是否希望資料被標準化(normalize)。如果我們設定為gl_true,所有資料都會被對映到0(對於有符號型signed資料是-1)到1之間。

第五個引數:叫做步長(stride),它告訴我們在連續的頂點屬性組之間的間隔。

第六個引數:的型別是void*,所以需要強制型別轉換。它表示位置資料在緩衝中起始位置的偏移量(offset)。

每個頂點屬性從乙個vbo管理的記憶體中獲得它的資料,而具體是從哪個vbo(程式中可以有多個vbo)獲取則是通過在呼叫glvetexattribpointer時繫結到gl_array_buffer的vbo決定的。由於在呼叫glvetexattribpointer之前繫結的是先前定義的vbo物件,頂點屬性0現在會鏈結到它的頂點資料。即:和最後乙個繫結到gl_array_buffer的vbo聯絡起來,shader的資料**於這個vbo。

cuda與opengl互操作之VBO

opengl的緩衝區可以對映到cuda的位址空間,當做global memory被訪問。這樣做可以使計算得到的資料直接視覺化,提公升速度。因為資料儲存在裝置端,沒有裝置端到主機端的傳輸耗費,不論計算還是可是化都相當的快。具體使用步驟 1 建立vbo glgenbuffers 1,vbo glbind...

如何使用OpenGL中的擴充套件

如果你在windows平台下開發 opengl程式,那麼 系統中自帶的opengl庫就是1.1的,如果想使用1.2或者更高版本的opengl庫,那麼只能使用opengl擴充套件,在網上關於如何使用opengl擴充套件的文章很多,但是多數都是簡單帶過,抄來抄去,很少有實際的 我當時也遇到過同樣的問題,...

OpenGL中的座標系與矩陣

1.opengl圖形管線 顯示流程 模型變換 modeling transformation mc 模型座標 child parent wc 世界座標 標準c語言的矩陣為行主序,即m i j 表示第i行 第j列。opengl中的矩陣為 列主序,即m i j 表示第i列 第j行。以下所有矩陣都為列主序...