頂點屬性
在 GPU 中有一塊 ARRAY_BUFFER,用來存頂點資料。一個頂點的資料,也就是 Vertex Shader 的輸入,由許多頂點屬性(Vertex Attribute)組成。因此需要配置 0~n 的頂點,要怎麼從 ARRAY_BUFFER 中取得一個 Vertex Attribute。
void glVertexAttribPointer(index, size, type, normalized, stride, pointer);GLuint *index*:屬性的 location
GLint *size*:該屬性有幾個 Component(1, 2, 3, 4)
GLenum *type*:該屬性的 component 是甚麼類型 (GL_FLOAT, GL_BYTE, GL_DOUBLE, GL_INT…)
GLboolean *normalized*:在讀取 fixed-point 值(非浮點數資料,例如 GL_UNSIGNED_BYTE)時要不要把值 normalized 到 [0,1] 或 [-1,1] 之間(根據是否為 signed value)
GLsizei *stride*:從 ARRAY_BUFFER 讀取資料時,每一個 Attribute 的間隔為多少。若 0 則為緊密排列
const void * *pointer*:在 ARRAY_BUFFER 中的起頭 Byte Offset。void* 型別來自歷史遺留問題