glVertexAttribPointer
Name
glVertexAttribPointer — 定義頂點屬性數組
C Specification
void glVertexAttribPointer( |
GLuint index, |
GLint size, | |
GLenum type, | |
GLboolean normalized, | |
GLsizei stride, | |
const GLvoid * pointer) ; |
Parameters
-
index
-
指定要修改的頂點屬性的索引值
-
size
-
指定每個頂點屬性的組件數量。必須為1、2、3或者4。初始值為4。(夢維:如position是由3個(x,y,z)組成,而顏色是4個(r,g,b,a))
-
type
-
指定數組中每個組件的數據類型。可用的符號常量有
GL_BYTE
,GL_UNSIGNED_BYTE
,GL_SHORT
,GL_UNSIGNED_SHORT
,GL_FIXED
, 和GL_FLOAT
,初始值為GL_FLOAT。 -
normalized
-
指定當被訪問時,固定點數據值是否應該被歸一化(GL_TRUE)或者直接轉換為固定點值(GL_FALSE)。
-
stride
-
指定連續頂點屬性之間的偏移量。如果為0,那么頂點屬性會被理解為:它們是緊密排列在一起的。初始值為0。
-
pointer
-
指定一個指針,指向數組中第一個頂點屬性的第一個組件。初始值為0。
Description
glVertexAttribPointer
指定了渲染時索引值為 index
的頂點屬性數組的數據格式和位置。size
指定每個屬性值的組件數量且必須為1、2、3、4之一。type
指定每個組件的數據格式,stride
指定了一個屬性到下一個屬性之間的步長(這就允許屬性值被存儲在單一數組或者不同的數組中)。當數組中的值被訪問並被轉換至浮點值時,如果normalized
被設置為GL_TRUE,意味着整數型的值會被映射至區間[-1,1](有符號整數),或者區間[0,1](無符號整數),反之,這些值會被直接轉換為浮點值而不進行歸一化處理。
如果一個名稱非零的緩沖對象被綁定至GL_ARRAY_BUFFER目標(見glBindBuffer)且此時一個定點屬性數組被指定了,那么pointer
被當做該緩沖對象數據存儲區的字節偏移量。並且,緩沖對象綁定(GL_ARRAY_BUFFER_BINDING)會被存為索引為index
的頂點屬性數組客戶端狀態(GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING);(Also, the buffer object binding (GL_ARRAY_BUFFER_BINDING
) is saved as generic vertex attribute array client-side state (GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
) for index index
.)
當一個頂點屬性數組被指定時,除了當前的頂點數組緩沖對象綁定,size
, type
, normalized
, stride
, 和 pointer
也會被存為客戶端狀態
要啟用或者禁用頂點屬性數組,調用glEnableVertexAttribArray和glDisableVertexAttribArray傳入參數index
。如果啟用,那么當glDrawArrays或者glDrawElements被調用時,頂點屬性數組會被使用。
Errors
GL_INVALID_ENUM
錯誤:如果 type
不是可接受的值。
GL_INVALID_VALUE錯誤:
如果 index
大於等於 GL_MAX_VERTEX_ATTRIBS
.
GL_INVALID_VALUE錯誤:
如果 size
不是 1, 2, 3, 或 4.
GL_INVALID_VALUE錯誤:
如果 stride
小於零.
Associated Gets
glGet 傳入參數 GL_MAX_VERTEX_ATTRIBS
glGetVertexAttrib 傳入參數 index
和 GL_VERTEX_ATTRIB_ARRAY_ENABLED
glGetVertexAttrib 傳入參數 index
和 GL_VERTEX_ATTRIB_ARRAY_SIZE
glGetVertexAttrib 傳入參數 index
和 GL_VERTEX_ATTRIB_ARRAY_TYPE
glGetVertexAttrib 傳入參數 index
和 GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
glGetVertexAttrib 傳入參數 index
和 GL_VERTEX_ATTRIB_ARRAY_STRIDE
glGetVertexAttrib 傳入參數index
和 GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
glGet 傳入參數 GL_ARRAY_BUFFER_BINDING
glGetVertexAttribPointerv 傳入參數 index
和 GL_VERTEX_ATTRIB_ARRAY_POINTER