There are
glVertexAttribPointer()
glVertexAttribIPointer()
glVertexAttribLPointer()
As far as I know, glVertexAttribPointer
ca
No, they can't be used instead of each other.
Traditionally, all vertex attributes of the GL are floating-point. The fact that you can input integer data doesn't change that - the data is converted to floating-point on the fly. The normalized
parameter controls how the conversion is done, if it is enabled, the range of the input type is mapped to the normalized [0,1] (for unsigned types, also called UNORM ing the GL) or [-1,1] (for signed types, also called SNORM), if it is disabled, the value is directly converted to the nearest floating-point value of the input integer.
Since this was the original API, it had to be extended when different attribute data types (integers and doubles) were introduced. Also note that the attribute pointers are independent of the shaders, so the target value cannot be determined by the currently bound shader (if any), as this might be used with different shaders later on. So, the L
variants id for double/dvec
attributes, while the I
variant is for int/uint/ivec/uvec
attributes.