glNormalPointer

[New - Windows 95, OEM Service Release 2]

The glNormalPointer function defines an array of normals.

void glNormalPointer(

    GLenum type,

 

    GLsizei stride,

 

    GLsizei count,

 

    const GLvoid *pointer

 

   );

 

 

Parameters

type

The data type of each coordinate in the array using the following symbolic constants: GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, and GL_DOUBLE.

stride

The byte offset between consecutive normals. When stride is zero, the normals are tightly packed in the array.

count

The number of normals, counting from the first, that are static.

pointer

A pointer to the first normal in the array.

 

Remarks

The glNormalPointer function specifies the location and data of an array of normals to use when rendering. The type parameter specifies the data type of each normal coordinate. The stride parameter determines the byte offset from one normal to the next, enabling the packing of vertices and attributes in a single array or storage in separate arrays. In some implementations storing the vertices and attributes in a single array can be more efficient than using separate arrays. Starting from the first normal element, count indicates the total number of static elements. Your application can modify static elements, but once the elements are modified, the application must explicitly specify the array again before using the array for any rendering. Non-static array elements are not accessed until you call glDrawArrays08Q9TG or glArrayElementMRW2UC.

A normal array is enabled when you specify the GL_NORMAL_ARRAY constant with glEnableClientState162GK9.. When enabled, glDrawArrays and glArrayElement use the normal array. By default the normal array is disabled.

You cannot include glNormalPointer in display lists.

When you specify a normal array using glNormalPointer, the values of all the function s normal array parameters are saved in a client-side state and static array elements can be cached. Because the normal array parameters are saved in a client-side state, their values are not saved or restored by glPushAttrib2Z6IY_ and glPopAttrib.

Although no error is generated when you call glNormalPointer within glBeginONJASG and glEndONJASG pairs, the results are undefined.

The following functions are associated with glNormalPointer:

glGet8KNKTW with argument GL_NORMAL_ARRAY_STRIDE

glGet with argument GL_NORMAL_ARRAY_COUNT

glGet with argument GL_NORMAL_ARRAY_TYPE

glGetPointerv with argument GL_NORMAL_ARRAY_POINTER

glIsEnabled1MZ_ZK. with argument GL_NORMAL_ARRAY

 

Error Codes

The following are the error codes generated and their conditions.

Error Code

Condition

GL_INVALID_ENUM

type was not an accepted value.

GL_INVALID_VALUE

stride or count was negative.

 

See Also

glArrayElement, glColorPointer, glDrawArrays, glEdgeFlagPointer, glGetPointerv, glIndexPointer, glIsEnabled, glTexCoordPointer, glVertexPointer, glGetString