Although function versions of all numerical formats (float,
integer, etc.) are exposed, only the float or double implementation is
implemented and gets ultimately called. For example in the set of
functions glNormal3b, glNormal3d, glNormal3f, glNormal3i, glNormal3s
only the function glNormal3d is really called.
Number-valued output vectors (i.e. as in glGetDoublev)
are always mapped to list elements. The input list has to be
initialized with a sufficient number of elements to receive the return
values. No further size checking is done - if the list is too short,
the additional output values are discarded.
Number-valued input vectors (i.e. as for the function glVertex2dv,
glVertex2fv,
glVertex2iv, glVertex2sv, glVertex3dv, glVertex3fv,
glVertex3iv, glVertex3sv, glVertex4dv, glVertex4fv,
glVertex4iv, glVertex4sv) are always taken from lists. If the list
is too short, additional input values are either set to 0.0 (for fixed
length input) or a segfault can result (for variable length inputs).
Input and output pointers (i.e. as for functionglReadPixels)operate on the byte
of Buffer objects. The byte arrays have to be pre-allocated for output
operations and sized correctly for both input and output operations to
avoid segfaults.