glVertexAttribPointer — 汎用頂点属性データの配列を定義します
void glVertexAttribPointer(
|
GLuint index, |
GLint size, | |
GLenum type, | |
GLboolean normalized, | |
GLsizei stride, | |
const void * pointer) ; |
void glVertexAttribIPointer(
|
GLuint index, |
GLint size, | |
GLenum type, | |
GLsizei stride, | |
const void * pointer) ; |
void glVertexAttribLPointer(
|
GLuint index, |
GLint size, | |
GLenum type, | |
GLsizei stride, | |
const void * pointer) ; |
index
変更する汎用頂点属性のインデックスを指定します。
size
汎用頂点属性のコンポーネントの数を指定します。
1、2、3、4 である必要があります。
さらに、シンボル定数 GL_BGRA
は glVertexAttribPointer
で利用できます。
初期値は 4 です。
type
配列内の各コンポーネントのデータ型を指定します。
シンボル定数
GL_BYTE
,
GL_UNSIGNED_BYTE
,
GL_SHORT
,
GL_UNSIGNED_SHORT
,
GL_INT
及び
GL_UNSIGNED_INT
は glVertexAttribPointer
と glVertexAttribIPointer
で利用できます。
更に、
GL_HALF_FLOAT
,
GL_FLOAT
,
GL_DOUBLE
,
GL_FIXED
,
GL_INT_2_10_10_10_REV
,
GL_UNSIGNED_INT_2_10_10_10_REV
及び
GL_UNSIGNED_INT_10F_11F_11F_REV
は glVertexAttribPointer
で利用できます。
GL_DOUBLE
は glVertexAttribLPointer
でも利用でき、その関数の type
パラメーターで利用できる唯一のトークンです。
初期値は GL_FLOAT
です。
normalized
glVertexAttribPointer
の場合、アクセス時に固定小数点データ値を正規化する(GL_TRUE
)か、固定小数点値として直接変換する(GL_FALSE
)かを指定します。
stride
連続する汎用頂点属性間のバイトオフセットを指定します。
stride
が 0 の場合、汎用頂点属性は配列に密にパックされていると理解されます。
初期値は 0 です。
pointer
GL_ARRAY_BUFFER
の対象として現在バインドされているバッファのデータストア内の配列内の最初の汎用頂点属性の最初のコンポーネントのオフセットを指定します。
初期値は 0 です。
glVertexAttribPointer
、glVertexAttribIPointer
、glVertexAttribLPointer
は、描画時に使用するインデックス index
の汎用頂点属性の配列の位置とデータ形式を指定します。 size
は、属性ごとのコンポーネントの数を指定し、1、2、3、4、または GL_BGRA
でなければなりません。
type
は各コンポーネントのデータ型を指定し、stride
は1つの属性から次の属性へのバイトストライドを指定します。これにより、頂点と属性を単一の配列にパックしたり、個別の配列に保存したりできます。
For glVertexAttribIPointer
, only the integer types GL_BYTE
,
GL_UNSIGNED_BYTE
, GL_SHORT
, GL_UNSIGNED_SHORT
,
GL_INT
, GL_UNSIGNED_INT
are accepted. Values are always left as integer values.
glVertexAttribPointer
の場合、normalized
に GL_TRUE
が設定されていれば、整数形式で格納された値は、範囲[-1,1](符号付きの場合)または[0,1](符号なしの場合)の float に変換されます。 それ以外の場合、値は正規化せずに直接 float に変換されます。
glVertexAttribIPointer
の場合、整数型である GL_BYTE
、GL_UNSIGNED_BYTE
、GL_SHORT
、GL_UNSIGNED_SHORT
、GL_INT
、GL_UNSIGNED_INT
のみが受け入れられます。 値は常に整数値のままです。
glVertexAttribLPointer
は、64ビットの double で宣言されたシェーダー属性変数に関連付けられた汎用頂点属性配列の状態を指定します。 type
は GL_DOUBLE
でなければなりません。 index
、size
、および stride
は、glVertexAttribPointer
および>glVertexAttribIPointer
の説明と同様に動作します。
If pointer
is not NULL
, a non-zero named buffer object must be bound to the
GL_ARRAY_BUFFER
target (see glBindBuffer),
otherwise an error is generated. pointer
is treated as a byte offset into the buffer object's data store.
The buffer object binding (GL_ARRAY_BUFFER_BINDING
) is saved as generic vertex attribute array
state (GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
) for index index
.
When a generic vertex attribute array is specified,
size
, type
,
normalized
,
stride
, and
pointer
are saved as vertex array
state, in addition to the current vertex array buffer object binding.
To enable and disable a generic vertex attribute array, call
glEnableVertexAttribArray and
glDisableVertexAttribArray
with index
.
If enabled, the generic vertex attribute array is used when glDrawArrays,
glMultiDrawArrays, glDrawElements,
glMultiDrawElements, or glDrawRangeElements
is called.
Each generic vertex attribute array is initially disabled and isn't accessed when glDrawElements, glDrawRangeElements, glDrawArrays, glMultiDrawArrays, or glMultiDrawElements is called.
GL_UNSIGNED_INT_10F_11F_11F_REV
is accepted for type
only if the GL version is 4.4 or higher.
GL_INVALID_VALUE
is generated if
index
is greater than or equal to
GL_MAX_VERTEX_ATTRIBS
.
GL_INVALID_VALUE
is generated if
size
is not 1, 2, 3, 4 or (for glVertexAttribPointer
),
GL_BGRA
.
GL_INVALID_ENUM
is generated if
type
is not an accepted value.
GL_INVALID_VALUE
is generated if
stride
is negative.
GL_INVALID_OPERATION
is generated if size
is GL_BGRA
and type
is not GL_UNSIGNED_BYTE
,
GL_INT_2_10_10_10_REV
or GL_UNSIGNED_INT_2_10_10_10_REV
.
GL_INVALID_OPERATION
is generated if type
is GL_INT_2_10_10_10_REV
or GL_UNSIGNED_INT_2_10_10_10_REV
and size
is not 4 or GL_BGRA
.
GL_INVALID_OPERATION
is generated if type
is GL_UNSIGNED_INT_10F_11F_11F_REV
and size
is not 3.
GL_INVALID_OPERATION
is generated by glVertexAttribPointer
if size
is GL_BGRA
and normalized
is GL_FALSE
.
GL_INVALID_OPERATION
is generated if zero is bound to the
GL_ARRAY_BUFFER
buffer object binding point and the
pointer
argument is not NULL
.
glGet
with argument GL_MAX_VERTEX_ATTRIBS
glGetVertexAttrib
with arguments index
and GL_VERTEX_ATTRIB_ARRAY_ENABLED
glGetVertexAttrib
with arguments index
and GL_VERTEX_ATTRIB_ARRAY_SIZE
glGetVertexAttrib
with arguments index
and GL_VERTEX_ATTRIB_ARRAY_TYPE
glGetVertexAttrib
with arguments index
and GL_VERTEX_ATTRIB_ARRAY_NORMALIZED
glGetVertexAttrib
with arguments index
and GL_VERTEX_ATTRIB_ARRAY_STRIDE
glGetVertexAttrib
with arguments index
and GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING
glGet with argument
GL_ARRAY_BUFFER_BINDING
glGetVertexAttribPointerv
with arguments index
and
GL_VERTEX_ATTRIB_ARRAY_POINTER
OpenGL Version | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Function / Feature Name | 2.0 | 2.1 | 3.0 | 3.1 | 3.2 | 3.3 | 4.0 | 4.1 | 4.2 | 4.3 | 4.4 | 4.5 |
glVertexAttribIPointer
|
- | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
glVertexAttribLPointer
|
- | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔ |
glVertexAttribPointer
|
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
glBindAttribLocation,
glBindBuffer,
glDisableVertexAttribArray
,
glDrawArrays,
glDrawElements,
glDrawRangeElements,
glEnableVertexAttribArray,
glMultiDrawArrays,
glMultiDrawElements,
glVertexAttrib
Copyright © 2003-2005 3Dlabs Inc. Ltd. Copyright © 2010-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.