As the inverse per-vertex may be computationally impractical, a slightly less accurate blend of inverse transpose matrices is allowed as the transformation. When the less accurate blend is used, the normals will only be identical to the normals formed by the more correct math when the blending matrices are pair-wise orthogonal and the sum of the square of the weights is equal to one. Yes, this removes little flexibility and significantly reduces the call overhead. Accepted by the parameter of MatrixMode and by the parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev. In addition, a current normal, current texture coordinates, current color, and a set of current weights may be used in processing each vertex.
Texture coordinates determine how a texture image is mapped onto a primitive.
Weights are used to blend between vertex transformations. When the values are supplied as byte, short, int, or their unsigned counterparts, they are converted to floating-point values as indicated for the corresponding type in Table 2.6. Vertex data may also be placed into arrays that are stored in the client's address space. Blocks of data in these arrays may then be used to specify multiple geometric primitives through the execution of a single GL command. For each command, type specifies the data type of the values stored in the array.