+Some applications want to make use of features that are not part of the
+standard GL. These features may be implemented as extensions to the
+standard GL. The @code{GL_EXTENSIONS} string is a space-separated list
+of supported GL extensions. (Extension names never contain a space
+character.)
+
+The @code{GL_VERSION} and @code{GL_SHADING_LANGUAGE_VERSION} strings
+begin with a version number. The version number uses one of these forms:
+
+@var{major_number.minor_number}@var{major_number.minor_number.release_number}
+
+Vendor-specific information may follow the version number. Its format
+depends on the implementation, but a space always separates the version
+number and the vendor-specific information.
+
+All strings are null-terminated.
+
+@code{GL_INVALID_ENUM} is generated if @var{name} is not an accepted
+value.
+
+@code{GL_INVALID_OPERATION} is generated if @code{glGetString} is
+executed between the execution of @code{glBegin} and the corresponding
+execution of @code{glEnd}.
+
+@end deftypefun
+
+@deftypefun void glGetTexEnvfv target pname params
+@deftypefunx void glGetTexEnviv target pname params
+Return texture environment parameters.
+
+@table @asis
+@item @var{target}
+Specifies a texture environment. May be @code{GL_TEXTURE_ENV},
+@code{GL_TEXTURE_FILTER_CONTROL}, or @code{GL_POINT_SPRITE}.
+
+@item @var{pname}
+Specifies the symbolic name of a texture environment parameter. Accepted
+values are @code{GL_TEXTURE_ENV_MODE}, @code{GL_TEXTURE_ENV_COLOR},
+@code{GL_TEXTURE_LOD_BIAS}, @code{GL_COMBINE_RGB},
+@code{GL_COMBINE_ALPHA}, @code{GL_SRC0_RGB}, @code{GL_SRC1_RGB},
+@code{GL_SRC2_RGB}, @code{GL_SRC0_ALPHA}, @code{GL_SRC1_ALPHA},
+@code{GL_SRC2_ALPHA}, @code{GL_OPERAND0_RGB}, @code{GL_OPERAND1_RGB},
+@code{GL_OPERAND2_RGB}, @code{GL_OPERAND0_ALPHA},
+@code{GL_OPERAND1_ALPHA}, @code{GL_OPERAND2_ALPHA}, @code{GL_RGB_SCALE},
+@code{GL_ALPHA_SCALE}, or @code{GL_COORD_REPLACE}.
+
+@item @var{params}
+Returns the requested data.
+
+@end table
+
+@code{glGetTexEnv} returns in @var{params} selected values of a texture
+environment that was specified with @code{glTexEnv}. @var{target}
+specifies a texture environment.
+
+When @var{target} is @code{GL_TEXTURE_FILTER_CONTROL}, @var{pname} must
+be @code{GL_TEXTURE_LOD_BIAS}. When @var{target} is
+@code{GL_POINT_SPRITE}, @var{pname} must be @code{GL_COORD_REPLACE}.
+When @var{target} is @code{GL_TEXTURE_ENV}, @var{pname} can be
+@code{GL_TEXTURE_ENV_MODE}, @code{GL_TEXTURE_ENV_COLOR},
+@code{GL_COMBINE_RGB}, @code{GL_COMBINE_ALPHA}, @code{GL_RGB_SCALE},
+@code{GL_ALPHA_SCALE}, @code{GL_SRC0_RGB}, @code{GL_SRC1_RGB},
+@code{GL_SRC2_RGB}, @code{GL_SRC0_ALPHA}, @code{GL_SRC1_ALPHA}, or
+@code{GL_SRC2_ALPHA}.
+
+@var{pname} names a specific texture environment parameter, as follows:
+
+@table @asis
+@item @code{GL_TEXTURE_ENV_MODE}
+@var{params} returns the single-valued texture environment mode, a
+symbolic constant. The initial value is @code{GL_MODULATE}.
+
+@item @code{GL_TEXTURE_ENV_COLOR}
+@var{params} returns four integer or floating-point values that are the
+texture environment color. Integer values, when requested, are linearly
+mapped from the internal floating-point representation such that 1.0
+maps to the most positive representable integer, and @r{-1.0} maps to
+the most negative representable integer. The initial value is (0, 0, 0,
+0).
+
+@item @code{GL_TEXTURE_LOD_BIAS}
+@var{params} returns a single floating-point value that is the texture
+level-of-detail bias. The initial value is 0.
+
+@item @code{GL_COMBINE_RGB}
+@var{params} returns a single symbolic constant value representing the
+current RGB combine mode. The initial value is @code{GL_MODULATE}.
+
+@item @code{GL_COMBINE_ALPHA}
+@var{params} returns a single symbolic constant value representing the
+current alpha combine mode. The initial value is @code{GL_MODULATE}.
+
+@item @code{GL_SRC0_RGB}
+@var{params} returns a single symbolic constant value representing the
+texture combiner zero's RGB source. The initial value is
+@code{GL_TEXTURE}.
+
+@item @code{GL_SRC1_RGB}
+@var{params} returns a single symbolic constant value representing the
+texture combiner one's RGB source. The initial value is
+@code{GL_PREVIOUS}.
+
+@item @code{GL_SRC2_RGB}
+@var{params} returns a single symbolic constant value representing the
+texture combiner two's RGB source. The initial value is
+@code{GL_CONSTANT}.
+
+@item @code{GL_SRC0_ALPHA}
+@var{params} returns a single symbolic constant value representing the
+texture combiner zero's alpha source. The initial value is
+@code{GL_TEXTURE}.
+
+@item @code{GL_SRC1_ALPHA}
+@var{params} returns a single symbolic constant value representing the
+texture combiner one's alpha source. The initial value is
+@code{GL_PREVIOUS}.
+
+@item @code{GL_SRC2_ALPHA}
+@var{params} returns a single symbolic constant value representing the
+texture combiner two's alpha source. The initial value is
+@code{GL_CONSTANT}.
+
+@item @code{GL_OPERAND0_RGB}
+@var{params} returns a single symbolic constant value representing the
+texture combiner zero's RGB operand. The initial value is
+@code{GL_SRC_COLOR}.
+
+@item @code{GL_OPERAND1_RGB}
+@var{params} returns a single symbolic constant value representing the
+texture combiner one's RGB operand. The initial value is
+@code{GL_SRC_COLOR}.
+
+@item @code{GL_OPERAND2_RGB}
+@var{params} returns a single symbolic constant value representing the
+texture combiner two's RGB operand. The initial value is
+@code{GL_SRC_ALPHA}.
+
+@item @code{GL_OPERAND0_ALPHA}
+@var{params} returns a single symbolic constant value representing the
+texture combiner zero's alpha operand. The initial value is
+@code{GL_SRC_ALPHA}.
+
+@item @code{GL_OPERAND1_ALPHA}
+@var{params} returns a single symbolic constant value representing the
+texture combiner one's alpha operand. The initial value is
+@code{GL_SRC_ALPHA}.
+
+@item @code{GL_OPERAND2_ALPHA}
+@var{params} returns a single symbolic constant value representing the
+texture combiner two's alpha operand. The initial value is
+@code{GL_SRC_ALPHA}.
+
+@item @code{GL_RGB_SCALE}
+@var{params} returns a single floating-point value representing the
+current RGB texture combiner scaling factor. The initial value is 1.0.
+
+@item @code{GL_ALPHA_SCALE}
+@var{params} returns a single floating-point value representing the
+current alpha texture combiner scaling factor. The initial value is 1.0.
+
+@item @code{GL_COORD_REPLACE}
+@var{params} returns a single boolean value representing the current
+point sprite texture coordinate replacement enable state. The initial
+value is @code{GL_FALSE}.
+
+@end table
+
+@code{GL_INVALID_ENUM} is generated if @var{target} or @var{pname} is
+not an accepted value.
+
+@code{GL_INVALID_OPERATION} is generated if @code{glGetTexEnv} is
+executed between the execution of @code{glBegin} and the corresponding
+execution of @code{glEnd}.
+
+@end deftypefun
+
+@deftypefun void glGetTexGenfv coord pname params
+@deftypefunx void glGetTexGeniv coord pname params
+Return texture coordinate generation parameters.
+
+@table @asis
+@item @var{coord}
+Specifies a texture coordinate. Must be @code{GL_S}, @code{GL_T},
+@code{GL_R}, or @code{GL_Q}.
+
+@item @var{pname}
+Specifies the symbolic name of the value(s) to be returned. Must be
+either @code{GL_TEXTURE_GEN_MODE} or the name of one of the texture
+generation plane equations: @code{GL_OBJECT_PLANE} or
+@code{GL_EYE_PLANE}.
+
+@item @var{params}
+Returns the requested data.
+
+@end table
+
+@code{glGetTexGen} returns in @var{params} selected parameters of a
+texture coordinate generation function that was specified using
+@code{glTexGen}. @var{coord} names one of the (@var{s}, @var{t},
+@var{r}, @var{q}) texture coordinates, using the symbolic constant
+@code{GL_S}, @code{GL_T}, @code{GL_R}, or @code{GL_Q}.
+
+@var{pname} specifies one of three symbolic names:
+
+@table @asis
+@item @code{GL_TEXTURE_GEN_MODE}
+@var{params} returns the single-valued texture generation function, a
+symbolic constant. The initial value is @code{GL_EYE_LINEAR}.
+
+@item @code{GL_OBJECT_PLANE}
+@var{params} returns the four plane equation coefficients that specify
+object linear-coordinate generation. Integer values, when requested, are
+mapped directly from the internal floating-point representation.
+
+@item @code{GL_EYE_PLANE}
+@var{params} returns the four plane equation coefficients that specify
+eye linear-coordinate generation. Integer values, when requested, are
+mapped directly from the internal floating-point representation. The
+returned values are those maintained in eye coordinates. They are not
+equal to the values specified using @code{glTexGen}, unless the
+modelview matrix was identity when @code{glTexGen} was called.
+
+@end table
+
+@code{GL_INVALID_ENUM} is generated if @var{coord} or @var{pname} is not
+an accepted value.
+
+@code{GL_INVALID_OPERATION} is generated if @code{glGetTexGen} is
+executed between the execution of @code{glBegin} and the corresponding
+execution of @code{glEnd}.
+
+@end deftypefun
+
+@deftypefun void glGetTexImage target level format type img
+Return a texture image.
+
+@table @asis
+@item @var{target}
+Specifies which texture is to be obtained. @code{GL_TEXTURE_1D},
+@code{GL_TEXTURE_2D}, @code{GL_TEXTURE_3D},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_X},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_X},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_Y},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_Y},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_Z}, and
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_Z} are accepted.
+
+@item @var{level}
+Specifies the level-of-detail number of the desired image. Level 0 is
+the base image level. Level @r{@var{n}} is the @r{@var{n}}th mipmap
+reduction image.
+
+@item @var{format}
+Specifies a pixel format for the returned data. The supported formats
+are @code{GL_RED}, @code{GL_GREEN}, @code{GL_BLUE}, @code{GL_ALPHA},
+@code{GL_RGB}, @code{GL_BGR}, @code{GL_RGBA}, @code{GL_BGRA},
+@code{GL_LUMINANCE}, and @code{GL_LUMINANCE_ALPHA}.
+
+@item @var{type}
+Specifies a pixel type for the returned data. The supported types are
+@code{GL_UNSIGNED_BYTE}, @code{GL_BYTE}, @code{GL_UNSIGNED_SHORT},
+@code{GL_SHORT}, @code{GL_UNSIGNED_INT}, @code{GL_INT}, @code{GL_FLOAT},
+@code{GL_UNSIGNED_BYTE_3_3_2}, @code{GL_UNSIGNED_BYTE_2_3_3_REV},
+@code{GL_UNSIGNED_SHORT_5_6_5}, @code{GL_UNSIGNED_SHORT_5_6_5_REV},
+@code{GL_UNSIGNED_SHORT_4_4_4_4}, @code{GL_UNSIGNED_SHORT_4_4_4_4_REV},
+@code{GL_UNSIGNED_SHORT_5_5_5_1}, @code{GL_UNSIGNED_SHORT_1_5_5_5_REV},
+@code{GL_UNSIGNED_INT_8_8_8_8}, @code{GL_UNSIGNED_INT_8_8_8_8_REV},
+@code{GL_UNSIGNED_INT_10_10_10_2}, and
+@code{GL_UNSIGNED_INT_2_10_10_10_REV}.
+
+@item @var{img}
+Returns the texture image. Should be a pointer to an array of the type
+specified by @var{type}.
+
+@end table
+
+@code{glGetTexImage} returns a texture image into @var{img}.
+@var{target} specifies whether the desired texture image is one
+specified by @code{glTexImage1D} (@code{GL_TEXTURE_1D}),
+@code{glTexImage2D} (@code{GL_TEXTURE_2D} or any of
+@code{GL_TEXTURE_CUBE_MAP_*}), or @code{glTexImage3D}
+(@code{GL_TEXTURE_3D}). @var{level} specifies the level-of-detail number
+of the desired image. @var{format} and @var{type} specify the format and
+type of the desired image array. See the reference pages
+@code{glTexImage1D} and @code{glDrawPixels} for a description of the
+acceptable values for the @var{format} and @var{type} parameters,
+respectively.
+
+If a non-zero named buffer object is bound to the
+@code{GL_PIXEL_PACK_BUFFER} target (see @code{glBindBuffer}) while a
+texture image is requested, @var{img} is treated as a byte offset into
+the buffer object's data store.
+
+To understand the operation of @code{glGetTexImage}, consider the
+selected internal four-component texture image to be an RGBA color
+buffer the size of the image. The semantics of @code{glGetTexImage} are
+then identical to those of @code{glReadPixels}, with the exception that
+no pixel transfer operations are performed, when called with the same
+@var{format} and @var{type}, with @var{x} and @var{y} set to 0,
+@var{width} set to the width of the texture image (including border if
+one was specified), and @var{height} set to 1 for 1D images, or to the
+height of the texture image (including border if one was specified) for
+2D images. Because the internal texture image is an RGBA image, pixel
+formats @code{GL_COLOR_INDEX}, @code{GL_STENCIL_INDEX}, and
+@code{GL_DEPTH_COMPONENT} are not accepted, and pixel type
+@code{GL_BITMAP} is not accepted.
+
+If the selected texture image does not contain four components, the
+following mappings are applied. Single-component textures are treated as
+RGBA buffers with red set to the single-component value, green set to 0,
+blue set to 0, and alpha set to 1. Two-component textures are treated as
+RGBA buffers with red set to the value of component zero, alpha set to
+the value of component one, and green and blue set to 0. Finally,
+three-component textures are treated as RGBA buffers with red set to
+component zero, green set to component one, blue set to component two,
+and alpha set to 1.
+
+To determine the required size of @var{img}, use
+@code{glGetTexLevelParameter} to determine the dimensions of the
+internal texture image, then scale the required number of pixels by the
+storage required for each pixel, based on @var{format} and @var{type}.
+Be sure to take the pixel storage parameters into account, especially
+@code{GL_PACK_ALIGNMENT}.
+
+@code{GL_INVALID_ENUM} is generated if @var{target}, @var{format}, or
+@var{type} is not an accepted value.
+
+@code{GL_INVALID_VALUE} is generated if @var{level} is less than 0.
+
+@code{GL_INVALID_VALUE} may be generated if @var{level} is greater than
+@r{@var{log}_2(@var{max},)}, where @r{@var{max}} is the returned value
+of @code{GL_MAX_TEXTURE_SIZE}.
+
+@code{GL_INVALID_OPERATION} is returned if @var{type} is one of
+@code{GL_UNSIGNED_BYTE_3_3_2}, @code{GL_UNSIGNED_BYTE_2_3_3_REV},
+@code{GL_UNSIGNED_SHORT_5_6_5}, or @code{GL_UNSIGNED_SHORT_5_6_5_REV}
+and @var{format} is not @code{GL_RGB}.
+
+@code{GL_INVALID_OPERATION} is returned if @var{type} is one of
+@code{GL_UNSIGNED_SHORT_4_4_4_4}, @code{GL_UNSIGNED_SHORT_4_4_4_4_REV},
+@code{GL_UNSIGNED_SHORT_5_5_5_1}, @code{GL_UNSIGNED_SHORT_1_5_5_5_REV},
+@code{GL_UNSIGNED_INT_8_8_8_8}, @code{GL_UNSIGNED_INT_8_8_8_8_REV},
+@code{GL_UNSIGNED_INT_10_10_10_2}, or
+@code{GL_UNSIGNED_INT_2_10_10_10_REV}, and @var{format} is neither
+@code{GL_RGBA} or @code{GL_BGRA}.
+
+@code{GL_INVALID_OPERATION} is generated if a non-zero buffer object
+name is bound to the @code{GL_PIXEL_PACK_BUFFER} target and the buffer
+object's data store is currently mapped.
+
+@code{GL_INVALID_OPERATION} is generated if a non-zero buffer object
+name is bound to the @code{GL_PIXEL_PACK_BUFFER} target and the data
+would be packed to the buffer object such that the memory writes
+required would exceed the data store size.
+
+@code{GL_INVALID_OPERATION} is generated if a non-zero buffer object
+name is bound to the @code{GL_PIXEL_PACK_BUFFER} target and @var{img} is
+not evenly divisible into the number of bytes needed to store in memory
+a datum indicated by @var{type}.
+
+@code{GL_INVALID_OPERATION} is generated if @code{glGetTexImage} is
+executed between the execution of @code{glBegin} and the corresponding
+execution of @code{glEnd}.
+
+@end deftypefun
+
+@deftypefun void glGetTexLevelParameterfv target level pname params
+@deftypefunx void glGetTexLevelParameteriv target level pname params
+Return texture parameter values for a specific level of detail.
+
+@table @asis
+@item @var{target}
+Specifies the symbolic name of the target texture, either
+@code{GL_TEXTURE_1D}, @code{GL_TEXTURE_2D}, @code{GL_TEXTURE_3D},
+@code{GL_PROXY_TEXTURE_1D}, @code{GL_PROXY_TEXTURE_2D},
+@code{GL_PROXY_TEXTURE_3D}, @code{GL_TEXTURE_CUBE_MAP_POSITIVE_X},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_X},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_Y},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_Y},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_Z},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}, or
+@code{GL_PROXY_TEXTURE_CUBE_MAP}.
+
+@item @var{level}
+Specifies the level-of-detail number of the desired image. Level 0 is
+the base image level. Level @r{@var{n}} is the @r{@var{n}}th mipmap
+reduction image.
+
+@item @var{pname}
+Specifies the symbolic name of a texture parameter.
+@code{GL_TEXTURE_WIDTH}, @code{GL_TEXTURE_HEIGHT},
+@code{GL_TEXTURE_DEPTH}, @code{GL_TEXTURE_INTERNAL_FORMAT},
+@code{GL_TEXTURE_BORDER}, @code{GL_TEXTURE_RED_SIZE},
+@code{GL_TEXTURE_GREEN_SIZE}, @code{GL_TEXTURE_BLUE_SIZE},
+@code{GL_TEXTURE_ALPHA_SIZE}, @code{GL_TEXTURE_LUMINANCE_SIZE},
+@code{GL_TEXTURE_INTENSITY_SIZE}, @code{GL_TEXTURE_DEPTH_SIZE},
+@code{GL_TEXTURE_COMPRESSED}, and
+@code{GL_TEXTURE_COMPRESSED_IMAGE_SIZE} are accepted.
+
+@item @var{params}
+Returns the requested data.
+
+@end table
+
+@code{glGetTexLevelParameter} returns in @var{params} texture parameter
+values for a specific level-of-detail value, specified as @var{level}.
+@var{target} defines the target texture, either @code{GL_TEXTURE_1D},
+@code{GL_TEXTURE_2D}, @code{GL_TEXTURE_3D}, @code{GL_PROXY_TEXTURE_1D},
+@code{GL_PROXY_TEXTURE_2D}, @code{GL_PROXY_TEXTURE_3D},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_X},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_X},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_Y},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_Y},
+@code{GL_TEXTURE_CUBE_MAP_POSITIVE_Z},
+@code{GL_TEXTURE_CUBE_MAP_NEGATIVE_Z}, or
+@code{GL_PROXY_TEXTURE_CUBE_MAP}.
+
+@code{GL_MAX_TEXTURE_SIZE}, and @code{GL_MAX_3D_TEXTURE_SIZE} are not
+really descriptive enough. It has to report the largest square texture
+image that can be accommodated with mipmaps and borders, but a long
+skinny texture, or a texture without mipmaps and borders, may easily fit
+in texture memory. The proxy targets allow the user to more accurately
+query whether the GL can accommodate a texture of a given configuration.
+If the texture cannot be accommodated, the texture state variables,
+which may be queried with @code{glGetTexLevelParameter}, are set to 0.
+If the texture can be accommodated, the texture state values will be set
+as they would be set for a non-proxy target.
+
+@var{pname} specifies the texture parameter whose value or values will
+be returned.
+
+The accepted parameter names are as follows:
+
+@table @asis
+@item @code{GL_TEXTURE_WIDTH}
+
+
+@var{params} returns a single value, the width of the texture image.
+This value includes the border of the texture image. The initial value
+is 0.
+
+@item @code{GL_TEXTURE_HEIGHT}
+
+
+@var{params} returns a single value, the height of the texture image.
+This value includes the border of the texture image. The initial value
+is 0.
+
+@item @code{GL_TEXTURE_DEPTH}
+
+
+@var{params} returns a single value, the depth of the texture image.
+This value includes the border of the texture image. The initial value
+is 0.
+
+@item @code{GL_TEXTURE_INTERNAL_FORMAT}
+
+
+@var{params} returns a single value, the internal format of the texture
+image.
+
+@item @code{GL_TEXTURE_BORDER}
+
+
+@var{params} returns a single value, the width in pixels of the border
+of the texture image. The initial value is 0.
+
+@item @code{GL_TEXTURE_RED_SIZE},
+@item @code{GL_TEXTURE_GREEN_SIZE},
+@item @code{GL_TEXTURE_BLUE_SIZE},
+@item @code{GL_TEXTURE_ALPHA_SIZE},
+@item @code{GL_TEXTURE_LUMINANCE_SIZE},
+@item @code{GL_TEXTURE_INTENSITY_SIZE},
+@item @code{GL_TEXTURE_DEPTH_SIZE}
+
+
+The internal storage resolution of an individual component. The
+resolution chosen by the GL will be a close match for the resolution
+requested by the user with the component argument of
+@code{glTexImage1D}, @code{glTexImage2D}, @code{glTexImage3D},
+@code{glCopyTexImage1D}, and @code{glCopyTexImage2D}. The initial value
+is 0.
+
+@item @code{GL_TEXTURE_COMPRESSED}
+
+
+@var{params} returns a single boolean value indicating if the texture
+image is stored in a compressed internal format. The initiali value is
+@code{GL_FALSE}.
+
+@item @code{GL_TEXTURE_COMPRESSED_IMAGE_SIZE}
+
+
+@var{params} returns a single integer value, the number of unsigned
+bytes of the compressed texture image that would be returned from
+@code{glGetCompressedTexImage}.
+
+@end table
+
+@code{GL_INVALID_ENUM} is generated if @var{target} or @var{pname} is
+not an accepted value.
+
+@code{GL_INVALID_VALUE} is generated if @var{level} is less than 0.
+
+@code{GL_INVALID_VALUE} may be generated if @var{level} is greater than
+@r{@var{log}_2}@var{max}, where @var{max} is the returned value of
+@code{GL_MAX_TEXTURE_SIZE}.
+
+@code{GL_INVALID_OPERATION} is generated if
+@code{glGetTexLevelParameter} is executed between the execution of
+@code{glBegin} and the corresponding execution of @code{glEnd}.
+
+@code{GL_INVALID_OPERATION} is generated if
+@code{GL_TEXTURE_COMPRESSED_IMAGE_SIZE} is queried on texture images
+with an uncompressed internal format or on proxy targets.
+
+@end deftypefun
+
+@deftypefun void glGetTexParameterfv target pname params
+@deftypefunx void glGetTexParameteriv target pname params
+Return texture parameter values.
+
+@table @asis
+@item @var{target}
+Specifies the symbolic name of the target texture. @code{GL_TEXTURE_1D},
+@code{GL_TEXTURE_2D}, @code{GL_TEXTURE_3D}, and
+@code{GL_TEXTURE_CUBE_MAP} are accepted.
+
+@item @var{pname}
+Specifies the symbolic name of a texture parameter.
+@code{GL_TEXTURE_MAG_FILTER}, @code{GL_TEXTURE_MIN_FILTER},
+@code{GL_TEXTURE_MIN_LOD}, @code{GL_TEXTURE_MAX_LOD},
+@code{GL_TEXTURE_BASE_LEVEL}, @code{GL_TEXTURE_MAX_LEVEL},
+@code{GL_TEXTURE_WRAP_S}, @code{GL_TEXTURE_WRAP_T},
+@code{GL_TEXTURE_WRAP_R}, @code{GL_TEXTURE_BORDER_COLOR},
+@code{GL_TEXTURE_PRIORITY}, @code{GL_TEXTURE_RESIDENT},
+@code{GL_TEXTURE_COMPARE_MODE}, @code{GL_TEXTURE_COMPARE_FUNC},
+@code{GL_DEPTH_TEXTURE_MODE}, and @code{GL_GENERATE_MIPMAP} are
+accepted.
+
+@item @var{params}
+Returns the texture parameters.
+
+@end table
+
+@code{glGetTexParameter} returns in @var{params} the value or values of
+the texture parameter specified as @var{pname}. @var{target} defines the
+target texture, either @code{GL_TEXTURE_1D}, @code{GL_TEXTURE_2D},
+@code{GL_TEXTURE_3D}, or @code{GL_TEXTURE_CUBE_MAP}, to specify one-,
+two-, or three-dimensional or cube-mapped texturing. @var{pname} accepts
+the same symbols as @code{glTexParameter}, with the same
+interpretations:
+
+@table @asis
+@item @code{GL_TEXTURE_MAG_FILTER}
+Returns the single-valued texture magnification filter, a symbolic
+constant. The initial value is @code{GL_LINEAR}.
+
+@item @code{GL_TEXTURE_MIN_FILTER}
+Returns the single-valued texture minification filter, a symbolic
+constant. The initial value is @code{GL_NEAREST_MIPMAP_LINEAR}.
+
+@item @code{GL_TEXTURE_MIN_LOD}
+Returns the single-valued texture minimum level-of-detail value. The
+initial value is @r{-1000}.
+
+@item @code{GL_TEXTURE_MAX_LOD}
+Returns the single-valued texture maximum level-of-detail value. The
+initial value is 1000.
+
+@item @code{GL_TEXTURE_BASE_LEVEL}
+Returns the single-valued base texture mipmap level. The initial value
+is 0.
+
+@item @code{GL_TEXTURE_MAX_LEVEL}
+Returns the single-valued maximum texture mipmap array level. The
+initial value is 1000.
+
+@item @code{GL_TEXTURE_WRAP_S}
+Returns the single-valued wrapping function for texture coordinate
+@r{@var{s}}, a symbolic constant. The initial value is @code{GL_REPEAT}.
+
+@item @code{GL_TEXTURE_WRAP_T}
+Returns the single-valued wrapping function for texture coordinate
+@r{@var{t}}, a symbolic constant. The initial value is @code{GL_REPEAT}.
+
+@item @code{GL_TEXTURE_WRAP_R}
+Returns the single-valued wrapping function for texture coordinate
+@r{@var{r}}, a symbolic constant. The initial value is @code{GL_REPEAT}.
+
+@item @code{GL_TEXTURE_BORDER_COLOR}
+Returns four integer or floating-point numbers that comprise the RGBA
+color of the texture border. Floating-point values are returned in the
+range @r{[0,1]}. Integer values are returned as a linear mapping of the
+internal floating-point representation such that 1.0 maps to the most
+positive representable integer and @r{-1.0} maps to the most negative
+representable integer. The initial value is (0, 0, 0, 0).
+
+@item @code{GL_TEXTURE_PRIORITY}
+Returns the residence priority of the target texture (or the named
+texture bound to it). The initial value is 1. See
+@code{glPrioritizeTextures}.
+
+@item @code{GL_TEXTURE_RESIDENT}
+Returns the residence status of the target texture. If the value
+returned in @var{params} is @code{GL_TRUE}, the texture is resident in
+texture memory. See @code{glAreTexturesResident}.
+
+@item @code{GL_TEXTURE_COMPARE_MODE}
+Returns a single-valued texture comparison mode, a symbolic constant.
+The initial value is @code{GL_NONE}. See @code{glTexParameter}.
+
+@item @code{GL_TEXTURE_COMPARE_FUNC}
+Returns a single-valued texture comparison function, a symbolic
+constant. The initial value is @code{GL_LEQUAL}. See
+@code{glTexParameter}.
+
+@item @code{GL_DEPTH_TEXTURE_MODE}
+Returns a single-valued texture format indicating how the depth values
+should be converted into color components. The initial value is
+@code{GL_LUMINANCE}. See @code{glTexParameter}.
+
+@item @code{GL_GENERATE_MIPMAP}
+Returns a single boolean value indicating if automatic mipmap level
+updates are enabled. See @code{glTexParameter}.
+
+@end table
+
+@code{GL_INVALID_ENUM} is generated if @var{target} or @var{pname} is
+not an accepted value.
+
+@code{GL_INVALID_OPERATION} is generated if @code{glGetTexParameter} is
+executed between the execution of @code{glBegin} and the corresponding
+execution of @code{glEnd}.
+
+@end deftypefun
+
+@deftypefun GLint glGetUniformLocation program name
+Returns the location of a uniform variable.
+
+@table @asis
+@item @var{program}
+Specifies the program object to be queried.
+
+@item @var{name}
+Points to a null terminated string containing the name of the uniform
+variable whose location is to be queried.
+
+@end table
+
+@code{glGetUniformLocation } returns an integer that represents the
+location of a specific uniform variable within a program object.
+@var{name} must be a null terminated string that contains no white
+space. @var{name} must be an active uniform variable name in
+@var{program} that is not a structure, an array of structures, or a
+subcomponent of a vector or a matrix. This function returns -1 if
+@var{name} does not correspond to an active uniform variable in
+@var{program} or if @var{name} starts with the reserved prefix "gl_".
+
+Uniform variables that are structures or arrays of structures may be
+queried by calling @code{glGetUniformLocation} for each field within the
+structure. The array element operator "[]" and the structure field
+operator "." may be used in @var{name} in order to select elements
+within an array or fields within a structure. The result of using these
+operators is not allowed to be another structure, an array of
+structures, or a subcomponent of a vector or a matrix. Except if the
+last part of @var{name} indicates a uniform variable array, the location
+of the first element of an array can be retrieved by using the name of
+the array, or by using the name appended by "[0]".
+
+The actual locations assigned to uniform variables are not known until
+the program object is linked successfully. After linking has occurred,
+the command @code{glGetUniformLocation} can be used to obtain the
+location of a uniform variable. This location value can then be passed
+to @code{glUniform} to set the value of the uniform variable or to
+@code{glGetUniform} in order to query the current value of the uniform
+variable. After a program object has been linked successfully, the index
+values for uniform variables remain fixed until the next link command
+occurs. Uniform variable locations and values can only be queried after
+a link if the link was successful.
+
+@code{GL_INVALID_VALUE} is generated if @var{program} is not a value
+generated by OpenGL.
+
+@code{GL_INVALID_OPERATION} is generated if @var{program} is not a
+program object.
+
+@code{GL_INVALID_OPERATION} is generated if @var{program} has not been
+successfully linked.
+
+@code{GL_INVALID_OPERATION} is generated if @code{glGetUniformLocation}
+is executed between the execution of @code{glBegin} and the
+corresponding execution of @code{glEnd}.
+
+@end deftypefun
+
+@deftypefun void glGetUniformfv program location params
+@deftypefunx void glGetUniformiv program location params
+Returns the value of a uniform variable.
+
+@table @asis
+@item @var{program}
+Specifies the program object to be queried.
+
+@item @var{location}
+Specifies the location of the uniform variable to be queried.
+
+@item @var{params}
+Returns the value of the specified uniform variable.
+
+@end table
+
+@code{glGetUniform} returns in @var{params} the value(s) of the
+specified uniform variable. The type of the uniform variable specified
+by @var{location} determines the number of values returned. If the
+uniform variable is defined in the shader as a boolean, int, or float, a
+single value will be returned. If it is defined as a vec2, ivec2, or
+bvec2, two values will be returned. If it is defined as a vec3, ivec3,
+or bvec3, three values will be returned, and so on. To query values
+stored in uniform variables declared as arrays, call @code{glGetUniform}
+for each element of the array. To query values stored in uniform
+variables declared as structures, call @code{glGetUniform} for each
+field in the structure. The values for uniform variables declared as a
+matrix will be returned in column major order.
+
+The locations assigned to uniform variables are not known until the
+program object is linked. After linking has occurred, the command
+@code{glGetUniformLocation} can be used to obtain the location of a
+uniform variable. This location value can then be passed to
+@code{glGetUniform} in order to query the current value of the uniform
+variable. After a program object has been linked successfully, the index
+values for uniform variables remain fixed until the next link command
+occurs. The uniform variable values can only be queried after a link if
+the link was successful.
+
+@code{GL_INVALID_VALUE} is generated if @var{program} is not a value
+generated by OpenGL.
+
+@code{GL_INVALID_OPERATION} is generated if @var{program} is not a
+program object.
+
+@code{GL_INVALID_OPERATION} is generated if @var{program} has not been
+successfully linked.
+
+@code{GL_INVALID_OPERATION} is generated if @var{location} does not
+correspond to a valid uniform variable location for the specified
+program object.
+
+@code{GL_INVALID_OPERATION} is generated if @code{glGetUniform} is
+executed between the execution of @code{glBegin} and the corresponding
+execution of @code{glEnd}.
+
+@end deftypefun
+
+@deftypefun void glGetVertexAttribPointerv index pname pointer
+Return the address of the specified generic vertex attribute pointer.
+
+@table @asis
+@item @var{index}
+Specifies the generic vertex attribute parameter to be returned.
+
+@item @var{pname}
+Specifies the symbolic name of the generic vertex attribute parameter to
+be returned. Must be @code{GL_VERTEX_ATTRIB_ARRAY_POINTER}.
+
+@item @var{pointer}
+Returns the pointer value.
+
+@end table
+
+@code{glGetVertexAttribPointerv} returns pointer information.
+@var{index} is the generic vertex attribute to be queried, @var{pname}
+is a symbolic constant indicating the pointer to be returned, and
+@var{params} is a pointer to a location in which to place the returned
+data.
+
+If a non-zero named buffer object was bound to the
+@code{GL_ARRAY_BUFFER} target (see @code{glBindBuffer}) when the desired
+pointer was previously specified, the @var{pointer} returned is a byte
+offset into the buffer object's data store.
+
+@code{GL_INVALID_VALUE} is generated if @var{index} is greater than or
+equal to @code{GL_MAX_VERTEX_ATTRIBS}.
+
+@code{GL_INVALID_ENUM} is generated if @var{pname} is not an accepted
+value.
+
+@end deftypefun
+
+@deftypefun void glGetVertexAttribfv index pname params
+@deftypefunx void glGetVertexAttribiv index pname params
+Return a generic vertex attribute parameter.
+
+@table @asis
+@item @var{index}
+Specifies the generic vertex attribute parameter to be queried.
+
+@item @var{pname}
+Specifies the symbolic name of the vertex attribute parameter to be
+queried. Accepted values are
+@code{GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING},
+@code{GL_VERTEX_ATTRIB_ARRAY_ENABLED},
+@code{GL_VERTEX_ATTRIB_ARRAY_SIZE},
+@code{GL_VERTEX_ATTRIB_ARRAY_STRIDE},
+@code{GL_VERTEX_ATTRIB_ARRAY_TYPE},
+@code{GL_VERTEX_ATTRIB_ARRAY_NORMALIZED}, or
+@code{GL_CURRENT_VERTEX_ATTRIB}.
+
+@item @var{params}
+Returns the requested data.
+
+@end table
+
+@code{glGetVertexAttrib} returns in @var{params} the value of a generic
+vertex attribute parameter. The generic vertex attribute to be queried
+is specified by @var{index}, and the parameter to be queried is
+specified by @var{pname}.
+
+The accepted parameter names are as follows:
+
+@table @asis
+@item @code{GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+currently bound to the binding point corresponding to generic vertex
+attribute array @var{index}. If no buffer object is bound, 0 is
+returned. The initial value is 0.
+
+@item @code{GL_VERTEX_ATTRIB_ARRAY_ENABLED}
+
+
+@var{params} returns a single value that is non-zero (true) if the
+vertex attribute array for @var{index} is enabled and 0 (false) if it is
+disabled. The initial value is @code{GL_FALSE}.
+
+@item @code{GL_VERTEX_ATTRIB_ARRAY_SIZE}
+
+
+@var{params} returns a single value, the size of the vertex attribute
+array for @var{index}. The size is the number of values for each element
+of the vertex attribute array, and it will be 1, 2, 3, or 4. The initial
+value is 4.
+
+@item @code{GL_VERTEX_ATTRIB_ARRAY_STRIDE}
+
+
+@var{params} returns a single value, the array stride for (number of
+bytes between successive elements in) the vertex attribute array for
+@var{index}. A value of 0 indicates that the array elements are stored
+sequentially in memory. The initial value is 0.
+
+@item @code{GL_VERTEX_ATTRIB_ARRAY_TYPE}
+
+
+@var{params} returns a single value, a symbolic constant indicating the
+array type for the vertex attribute array for @var{index}. Possible
+values are @code{GL_BYTE}, @code{GL_UNSIGNED_BYTE}, @code{GL_SHORT},
+@code{GL_UNSIGNED_SHORT}, @code{GL_INT}, @code{GL_UNSIGNED_INT},
+@code{GL_FLOAT}, and @code{GL_DOUBLE}. The initial value is
+@code{GL_FLOAT}.
+
+@item @code{GL_VERTEX_ATTRIB_ARRAY_NORMALIZED}
+
+
+@var{params} returns a single value that is non-zero (true) if
+fixed-point data types for the vertex attribute array indicated by
+@var{index} are normalized when they are converted to floating point,
+and 0 (false) otherwise. The initial value is @code{GL_FALSE}.
+
+@item @code{GL_CURRENT_VERTEX_ATTRIB}
+
+
+@var{params} returns four values that represent the current value for
+the generic vertex attribute specified by index. Generic vertex
+attribute 0 is unique in that it has no current state, so an error will
+be generated if @var{index} is 0. The initial value for all other
+generic vertex attributes is (0,0,0,1).
+
+@end table
+
+All of the parameters except @code{GL_CURRENT_VERTEX_ATTRIB} represent
+client-side state.
+
+@code{GL_INVALID_VALUE} is generated if @var{index} is greater than or
+equal to @code{GL_MAX_VERTEX_ATTRIBS}.
+
+@code{GL_INVALID_ENUM} is generated if @var{pname} is not an accepted
+value.
+
+@code{GL_INVALID_OPERATION} is generated if @var{index} is 0 and
+@var{pname} is @code{GL_CURRENT_VERTEX_ATTRIB}.
+
+@end deftypefun
+
+@deftypefun void glGetBooleanv pname params
+@deftypefunx void glGetDoublev pname params
+@deftypefunx void glGetFloatv pname params
+@deftypefunx void glGetIntegerv pname params
+Return the value or values of a selected parameter.
+
+@table @asis
+@item @var{pname}
+Specifies the parameter value to be returned. The symbolic constants in
+the list below are accepted.
+
+@item @var{params}
+Returns the value or values of the specified parameter.
+
+@end table
+
+These four commands return values for simple state variables in GL.
+@var{pname} is a symbolic constant indicating the state variable to be
+returned, and @var{params} is a pointer to an array of the indicated
+type in which to place the returned data.
+
+Type conversion is performed if @var{params} has a different type than
+the state variable value being requested. If @code{glGetBooleanv} is
+called, a floating-point (or integer) value is converted to
+@code{GL_FALSE} if and only if it is 0.0 (or 0). Otherwise, it is
+converted to @code{GL_TRUE}. If @code{glGetIntegerv} is called, boolean
+values are returned as @code{GL_TRUE} or @code{GL_FALSE}, and most
+floating-point values are rounded to the nearest integer value.
+Floating-point colors and normals, however, are returned with a linear
+mapping that maps 1.0 to the most positive representable integer value
+and @r{-1.0} to the most negative representable integer value. If
+@code{glGetFloatv} or @code{glGetDoublev} is called, boolean values are
+returned as @code{GL_TRUE} or @code{GL_FALSE}, and integer values are
+converted to floating-point values.
+
+The following symbolic constants are accepted by @var{pname}:
+
+@table @asis
+@item @code{GL_ACCUM_ALPHA_BITS}
+
+
+@var{params} returns one value, the number of alpha bitplanes in the
+accumulation buffer.
+
+@item @code{GL_ACCUM_BLUE_BITS}
+
+
+@var{params} returns one value, the number of blue bitplanes in the
+accumulation buffer.
+
+@item @code{GL_ACCUM_CLEAR_VALUE}
+
+
+@var{params} returns four values: the red, green, blue, and alpha values
+used to clear the accumulation buffer. Integer values, if requested, are
+linearly mapped from the internal floating-point representation such
+that 1.0 returns the most positive representable integer value, and
+@r{-1.0} returns the most negative representable integer value. The
+initial value is (0, 0, 0, 0). See @code{glClearAccum}.
+
+@item @code{GL_ACCUM_GREEN_BITS}
+
+
+@var{params} returns one value, the number of green bitplanes in the
+accumulation buffer.
+
+@item @code{GL_ACCUM_RED_BITS}
+
+
+@var{params} returns one value, the number of red bitplanes in the
+accumulation buffer.
+
+@item @code{GL_ACTIVE_TEXTURE}
+
+
+@var{params} returns a single value indicating the active multitexture
+unit. The initial value is @code{GL_TEXTURE0}. See
+@code{glActiveTexture}.
+
+@item @code{GL_ALIASED_POINT_SIZE_RANGE}
+
+
+@var{params} returns two values, the smallest and largest supported
+sizes for aliased points.
+
+@item @code{GL_ALIASED_LINE_WIDTH_RANGE}
+
+
+@var{params} returns two values, the smallest and largest supported
+widths for aliased lines.
+
+@item @code{GL_ALPHA_BIAS}
+
+
+@var{params} returns one value, the alpha bias factor used during pixel
+transfers. The initial value is 0. See @code{glPixelTransfer}.
+
+@item @code{GL_ALPHA_BITS}
+
+
+@var{params} returns one value, the number of alpha bitplanes in each
+color buffer.
+
+@item @code{GL_ALPHA_SCALE}
+
+
+@var{params} returns one value, the alpha scale factor used during pixel
+transfers. The initial value is 1. See @code{glPixelTransfer}.
+
+@item @code{GL_ALPHA_TEST}
+
+
+@var{params} returns a single boolean value indicating whether alpha
+testing of fragments is enabled. The initial value is @code{GL_FALSE}.
+See @code{glAlphaFunc}.
+
+@item @code{GL_ALPHA_TEST_FUNC}@var{params} returns one value,
+
+
+the symbolic name of the alpha test function. The initial value is
+@code{GL_ALWAYS}. See @code{glAlphaFunc}.
+
+@item @code{GL_ALPHA_TEST_REF}
+
+
+@var{params} returns one value, the reference value for the alpha test.
+The initial value is 0. See @code{glAlphaFunc}. An integer value, if
+requested, is linearly mapped from the internal floating-point
+representation such that 1.0 returns the most positive representable
+integer value, and @r{-1.0} returns the most negative representable
+integer value.
+
+@item @code{GL_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+currently bound to the target @code{GL_ARRAY_BUFFER}. If no buffer
+object is bound to this target, 0 is returned. The initial value is 0.
+See @code{glBindBuffer}.
+
+@item @code{GL_ATTRIB_STACK_DEPTH}
+
+
+@var{params} returns one value, the depth of the attribute stack. If the
+stack is empty, 0 is returned. The initial value is 0. See
+@code{glPushAttrib}.
+
+@item @code{GL_AUTO_NORMAL}
+
+
+@var{params} returns a single boolean value indicating whether 2D map
+evaluation automatically generates surface normals. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_AUX_BUFFERS}
+
+
+@var{params} returns one value, the number of auxiliary color buffers
+available.
+
+@item @code{GL_BLEND}
+
+
+@var{params} returns a single boolean value indicating whether blending
+is enabled. The initial value is @code{GL_FALSE}. See
+@code{glBlendFunc}.
+
+@item @code{GL_BLEND_COLOR}
+
+
+@var{params} returns four values, the red, green, blue, and alpha values
+which are the components of the blend color. See @code{glBlendColor}.
+
+@item @code{GL_BLEND_DST_ALPHA}
+
+
+@var{params} returns one value, the symbolic constant identifying the
+alpha destination blend function. The initial value is @code{GL_ZERO}.
+See @code{glBlendFunc} and @code{glBlendFuncSeparate}.
+
+@item @code{GL_BLEND_DST_RGB}
+
+
+@var{params} returns one value, the symbolic constant identifying the
+RGB destination blend function. The initial value is @code{GL_ZERO}. See
+@code{glBlendFunc} and @code{glBlendFuncSeparate}.
+
+@item @code{GL_BLEND_EQUATION_RGB}
+
+
+@var{params} returns one value, a symbolic constant indicating whether
+the RGB blend equation is @code{GL_FUNC_ADD}, @code{GL_FUNC_SUBTRACT},
+@code{GL_FUNC_REVERSE_SUBTRACT}, @code{GL_MIN} or @code{GL_MAX}. See
+@code{glBlendEquationSeparate}.
+
+@item @code{GL_BLEND_EQUATION_ALPHA}
+
+
+@var{params} returns one value, a symbolic constant indicating whether
+the Alpha blend equation is @code{GL_FUNC_ADD}, @code{GL_FUNC_SUBTRACT},
+@code{GL_FUNC_REVERSE_SUBTRACT}, @code{GL_MIN} or @code{GL_MAX}. See
+@code{glBlendEquationSeparate}.
+
+@item @code{GL_BLEND_SRC_ALPHA}
+
+
+@var{params} returns one value, the symbolic constant identifying the
+alpha source blend function. The initial value is @code{GL_ONE}. See
+@code{glBlendFunc} and @code{glBlendFuncSeparate}.
+
+@item @code{GL_BLEND_SRC_RGB}
+
+
+@var{params} returns one value, the symbolic constant identifying the
+RGB source blend function. The initial value is @code{GL_ONE}. See
+@code{glBlendFunc} and @code{glBlendFuncSeparate}.
+
+@item @code{GL_BLUE_BIAS}
+
+
+@var{params} returns one value, the blue bias factor used during pixel
+transfers. The initial value is 0. See @code{glPixelTransfer}.
+
+@item @code{GL_BLUE_BITS}
+
+
+@var{params} returns one value, the number of blue bitplanes in each
+color buffer.
+
+@item @code{GL_BLUE_SCALE}
+
+
+@var{params} returns one value, the blue scale factor used during pixel
+transfers. The initial value is 1. See @code{glPixelTransfer}.
+
+@item @code{GL_CLIENT_ACTIVE_TEXTURE}
+
+
+@var{params} returns a single integer value indicating the current
+client active multitexture unit. The initial value is
+@code{GL_TEXTURE0}. See @code{glClientActiveTexture}.
+
+@item @code{GL_CLIENT_ATTRIB_STACK_DEPTH}
+
+
+@var{params} returns one value indicating the depth of the attribute
+stack. The initial value is 0. See @code{glPushClientAttrib}.
+
+@item @code{GL_CLIP_PLANE}@var{i}
+
+
+@var{params} returns a single boolean value indicating whether the
+specified clipping plane is enabled. The initial value is
+@code{GL_FALSE}. See @code{glClipPlane}.
+
+@item @code{GL_COLOR_ARRAY}
+
+
+@var{params} returns a single boolean value indicating whether the color
+array is enabled. The initial value is @code{GL_FALSE}. See
+@code{glColorPointer}.
+
+@item @code{GL_COLOR_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+associated with the color array. This buffer object would have been
+bound to the target @code{GL_ARRAY_BUFFER} at the time of the most
+recent call to @code{glColorPointer}. If no buffer object was bound to
+this target, 0 is returned. The initial value is 0. See
+@code{glBindBuffer}.
+
+@item @code{GL_COLOR_ARRAY_SIZE}
+
+
+@var{params} returns one value, the number of components per color in
+the color array. The initial value is 4. See @code{glColorPointer}.
+
+@item @code{GL_COLOR_ARRAY_STRIDE}
+
+
+@var{params} returns one value, the byte offset between consecutive
+colors in the color array. The initial value is 0. See
+@code{glColorPointer}.
+
+@item @code{GL_COLOR_ARRAY_TYPE}
+
+
+@var{params} returns one value, the data type of each component in the
+color array. The initial value is @code{GL_FLOAT}. See
+@code{glColorPointer}.
+
+@item @code{GL_COLOR_CLEAR_VALUE}
+
+
+@var{params} returns four values: the red, green, blue, and alpha values
+used to clear the color buffers. Integer values, if requested, are
+linearly mapped from the internal floating-point representation such
+that 1.0 returns the most positive representable integer value, and
+@r{-1.0} returns the most negative representable integer value. The
+initial value is (0, 0, 0, 0). See @code{glClearColor}.
+
+@item @code{GL_COLOR_LOGIC_OP}
+
+
+@var{params} returns a single boolean value indicating whether a
+fragment's RGBA color values are merged into the framebuffer using a
+logical operation. The initial value is @code{GL_FALSE}. See
+@code{glLogicOp}.
+
+@item @code{GL_COLOR_MATERIAL}
+
+
+@var{params} returns a single boolean value indicating whether one or
+more material parameters are tracking the current color. The initial
+value is @code{GL_FALSE}. See @code{glColorMaterial}.
+
+@item @code{GL_COLOR_MATERIAL_FACE}
+
+
+@var{params} returns one value, a symbolic constant indicating which
+materials have a parameter that is tracking the current color. The
+initial value is @code{GL_FRONT_AND_BACK}. See @code{glColorMaterial}.
+
+@item @code{GL_COLOR_MATERIAL_PARAMETER}
+
+
+@var{params} returns one value, a symbolic constant indicating which
+material parameters are tracking the current color. The initial value is
+@code{GL_AMBIENT_AND_DIFFUSE}. See @code{glColorMaterial}.
+
+@item @code{GL_COLOR_MATRIX}
+
+
+@var{params} returns sixteen values: the color matrix on the top of the
+color matrix stack. Initially this matrix is the identity matrix. See
+@code{glPushMatrix}.
+
+@item @code{GL_COLOR_MATRIX_STACK_DEPTH}
+
+
+@var{params} returns one value, the maximum supported depth of the
+projection matrix stack. The value must be at least 2. See
+@code{glPushMatrix}.
+
+@item @code{GL_COLOR_SUM}
+
+
+@var{params} returns a single boolean value indicating whether primary
+and secondary color sum is enabled. See @code{glSecondaryColor}.
+
+@item @code{GL_COLOR_TABLE}
+
+
+@var{params} returns a single boolean value indicating whether the color
+table lookup is enabled. See @code{glColorTable}.
+
+@item @code{GL_COLOR_WRITEMASK}
+
+
+@var{params} returns four boolean values: the red, green, blue, and
+alpha write enables for the color buffers. The initial value is
+(@code{GL_TRUE}, @code{GL_TRUE}, @code{GL_TRUE}, @code{GL_TRUE}). See
+@code{glColorMask}.
+
+@item @code{GL_COMPRESSED_TEXTURE_FORMATS}
+
+
+@var{params} returns a list of symbolic constants of length
+@code{GL_NUM_COMPRESSED_TEXTURE_FORMATS} indicating which compressed
+texture formats are available. See @code{glCompressedTexImage2D}.
+
+@item @code{GL_CONVOLUTION_1D}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+convolution is enabled. The initial value is @code{GL_FALSE}. See
+@code{glConvolutionFilter1D}.
+
+@item @code{GL_CONVOLUTION_2D}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+convolution is enabled. The initial value is @code{GL_FALSE}. See
+@code{glConvolutionFilter2D}.
+
+@item @code{GL_CULL_FACE}
+
+
+@var{params} returns a single boolean value indicating whether polygon
+culling is enabled. The initial value is @code{GL_FALSE}. See
+@code{glCullFace}.
+
+@item @code{GL_CULL_FACE_MODE}
+
+
+@var{params} returns one value, a symbolic constant indicating which
+polygon faces are to be culled. The initial value is @code{GL_BACK}. See
+@code{glCullFace}.
+
+@item @code{GL_CURRENT_COLOR}
+
+
+@var{params} returns four values: the red, green, blue, and alpha values
+of the current color. Integer values, if requested, are linearly mapped
+from the internal floating-point representation such that 1.0 returns
+the most positive representable integer value, and @r{-1.0} returns the
+most negative representable integer value. The initial value is (1, 1,
+1, 1). See @code{glColor}.
+
+@item @code{GL_CURRENT_FOG_COORD}
+
+
+@var{params} returns one value, the current fog coordinate. The initial
+value is 0. See @code{glFogCoord}.
+
+@item @code{GL_CURRENT_INDEX}
+
+
+@var{params} returns one value, the current color index. The initial
+value is 1. See @code{glIndex}.
+
+@item @code{GL_CURRENT_NORMAL}
+
+
+@var{params} returns three values: the @var{x}, @var{y}, and @var{z}
+values of the current normal. Integer values, if requested, are linearly
+mapped from the internal floating-point representation such that 1.0
+returns the most positive representable integer value, and @r{-1.0}
+returns the most negative representable integer value. The initial value
+is (0, 0, 1). See @code{glNormal}.
+
+@item @code{GL_CURRENT_PROGRAM}
+
+
+@var{params} returns one value, the name of the program object that is
+currently active, or 0 if no program object is active. See
+@code{glUseProgram}.
+
+@item @code{GL_CURRENT_RASTER_COLOR}
+
+
+@var{params} returns four values: the red, green, blue, and alpha color
+values of the current raster position. Integer values, if requested, are
+linearly mapped from the internal floating-point representation such
+that 1.0 returns the most positive representable integer value, and
+@r{-1.0} returns the most negative representable integer value. The
+initial value is (1, 1, 1, 1). See @code{glRasterPos}.
+
+@item @code{GL_CURRENT_RASTER_DISTANCE}
+
+
+@var{params} returns one value, the distance from the eye to the current
+raster position. The initial value is 0. See @code{glRasterPos}.
+
+@item @code{GL_CURRENT_RASTER_INDEX}
+
+
+@var{params} returns one value, the color index of the current raster
+position. The initial value is 1. See @code{glRasterPos}.
+
+@item @code{GL_CURRENT_RASTER_POSITION}
+
+
+@var{params} returns four values: the @var{x}, @var{y}, @var{z}, and
+@var{w} components of the current raster position. @var{x}, @var{y}, and
+@var{z} are in window coordinates, and @var{w} is in clip coordinates.
+The initial value is (0, 0, 0, 1). See @code{glRasterPos}.
+
+@item @code{GL_CURRENT_RASTER_POSITION_VALID}
+
+
+@var{params} returns a single boolean value indicating whether the
+current raster position is valid. The initial value is @code{GL_TRUE}.
+See @code{glRasterPos}.
+
+@item @code{GL_CURRENT_RASTER_SECONDARY_COLOR}
+
+
+@var{params} returns four values: the red, green, blue, and alpha
+secondary color values of the current raster position. Integer values,
+if requested, are linearly mapped from the internal floating-point
+representation such that 1.0 returns the most positive representable
+integer value, and @r{-1.0} returns the most negative representable
+integer value. The initial value is (1, 1, 1, 1). See
+@code{glRasterPos}.
+
+@item @code{GL_CURRENT_RASTER_TEXTURE_COORDS}
+
+
+@var{params} returns four values: the @var{s}, @var{t}, @var{r}, and
+@var{q} texture coordinates of the current raster position. The initial
+value is (0, 0, 0, 1). See @code{glRasterPos} and
+@code{glMultiTexCoord}.
+
+@item @code{GL_CURRENT_SECONDARY_COLOR}
+
+
+@var{params} returns four values: the red, green, blue, and alpha values
+of the current secondary color. Integer values, if requested, are
+linearly mapped from the internal floating-point representation such
+that 1.0 returns the most positive representable integer value, and
+@r{-1.0} returns the most negative representable integer value. The
+initial value is (0, 0, 0, 0). See @code{glSecondaryColor}.
+
+@item @code{GL_CURRENT_TEXTURE_COORDS}
+
+
+@var{params} returns four values: the @var{s}, @var{t}, @var{r}, and
+@var{q} current texture coordinates. The initial value is (0, 0, 0, 1).
+See @code{glMultiTexCoord}.
+
+@item @code{GL_DEPTH_BIAS}
+
+
+@var{params} returns one value, the depth bias factor used during pixel
+transfers. The initial value is 0. See @code{glPixelTransfer}.
+
+@item @code{GL_DEPTH_BITS}
+
+
+@var{params} returns one value, the number of bitplanes in the depth
+buffer.
+
+@item @code{GL_DEPTH_CLEAR_VALUE}
+
+
+@var{params} returns one value, the value that is used to clear the
+depth buffer. Integer values, if requested, are linearly mapped from the
+internal floating-point representation such that 1.0 returns the most
+positive representable integer value, and @r{-1.0} returns the most
+negative representable integer value. The initial value is 1. See
+@code{glClearDepth}.
+
+@item @code{GL_DEPTH_FUNC}
+
+
+@var{params} returns one value, the symbolic constant that indicates the
+depth comparison function. The initial value is @code{GL_LESS}. See
+@code{glDepthFunc}.
+
+@item @code{GL_DEPTH_RANGE}
+
+
+@var{params} returns two values: the near and far mapping limits for the
+depth buffer. Integer values, if requested, are linearly mapped from the
+internal floating-point representation such that 1.0 returns the most
+positive representable integer value, and @r{-1.0} returns the most
+negative representable integer value. The initial value is (0, 1). See
+@code{glDepthRange}.
+
+@item @code{GL_DEPTH_SCALE}
+
+
+@var{params} returns one value, the depth scale factor used during pixel
+transfers. The initial value is 1. See @code{glPixelTransfer}.
+
+@item @code{GL_DEPTH_TEST}
+
+
+@var{params} returns a single boolean value indicating whether depth
+testing of fragments is enabled. The initial value is @code{GL_FALSE}.
+See @code{glDepthFunc} and @code{glDepthRange}.
+
+@item @code{GL_DEPTH_WRITEMASK}
+
+
+@var{params} returns a single boolean value indicating if the depth
+buffer is enabled for writing. The initial value is @code{GL_TRUE}. See
+@code{glDepthMask}.
+
+@item @code{GL_DITHER}
+
+
+@var{params} returns a single boolean value indicating whether dithering
+of fragment colors and indices is enabled. The initial value is
+@code{GL_TRUE}.
+
+@item @code{GL_DOUBLEBUFFER}
+
+
+@var{params} returns a single boolean value indicating whether double
+buffering is supported.
+
+@item @code{GL_DRAW_BUFFER}
+
+
+@var{params} returns one value, a symbolic constant indicating which
+buffers are being drawn to. See @code{glDrawBuffer}. The initial value
+is @code{GL_BACK} if there are back buffers, otherwise it is
+@code{GL_FRONT}.
+
+@item @code{GL_DRAW_BUFFER}@var{i}
+
+
+@var{params} returns one value, a symbolic constant indicating which
+buffers are being drawn to by the corresponding output color. See
+@code{glDrawBuffers}. The initial value of @code{GL_DRAW_BUFFER0} is
+@code{GL_BACK} if there are back buffers, otherwise it is
+@code{GL_FRONT}. The initial values of draw buffers for all other output
+colors is @code{GL_NONE}.
+
+@item @code{GL_EDGE_FLAG}
+
+
+@var{params} returns a single boolean value indicating whether the
+current edge flag is @code{GL_TRUE} or @code{GL_FALSE}. The initial
+value is @code{GL_TRUE}. See @code{glEdgeFlag}.
+
+@item @code{GL_EDGE_FLAG_ARRAY}
+
+
+@var{params} returns a single boolean value indicating whether the edge
+flag array is enabled. The initial value is @code{GL_FALSE}. See
+@code{glEdgeFlagPointer}.
+
+@item @code{GL_EDGE_FLAG_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+associated with the edge flag array. This buffer object would have been
+bound to the target @code{GL_ARRAY_BUFFER} at the time of the most
+recent call to @code{glEdgeFlagPointer}. If no buffer object was bound
+to this target, 0 is returned. The initial value is 0. See
+@code{glBindBuffer}.
+
+@item @code{GL_EDGE_FLAG_ARRAY_STRIDE}
+
+
+@var{params} returns one value, the byte offset between consecutive edge
+flags in the edge flag array. The initial value is 0. See
+@code{glEdgeFlagPointer}.
+
+@item @code{GL_ELEMENT_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+currently bound to the target @code{GL_ELEMENT_ARRAY_BUFFER}. If no
+buffer object is bound to this target, 0 is returned. The initial value
+is 0. See @code{glBindBuffer}.
+
+@item @code{GL_FEEDBACK_BUFFER_SIZE}
+
+
+@var{params} returns one value, the size of the feedback buffer. See
+@code{glFeedbackBuffer}.
+
+@item @code{GL_FEEDBACK_BUFFER_TYPE}
+
+
+@var{params} returns one value, the type of the feedback buffer. See
+@code{glFeedbackBuffer}.
+
+@item @code{GL_FOG}
+
+
+@var{params} returns a single boolean value indicating whether fogging
+is enabled. The initial value is @code{GL_FALSE}. See @code{glFog}.
+
+@item @code{GL_FOG_COORD_ARRAY}
+
+
+@var{params} returns a single boolean value indicating whether the fog
+coordinate array is enabled. The initial value is @code{GL_FALSE}. See
+@code{glFogCoordPointer}.
+
+@item @code{GL_FOG_COORD_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+associated with the fog coordinate array. This buffer object would have
+been bound to the target @code{GL_ARRAY_BUFFER} at the time of the most
+recent call to @code{glFogCoordPointer}. If no buffer object was bound
+to this target, 0 is returned. The initial value is 0. See
+@code{glBindBuffer}.
+
+@item @code{GL_FOG_COORD_ARRAY_STRIDE}
+
+
+@var{params} returns one value, the byte offset between consecutive fog
+coordinates in the fog coordinate array. The initial value is 0. See
+@code{glFogCoordPointer}.
+
+@item @code{GL_FOG_COORD_ARRAY_TYPE}
+
+
+@var{params} returns one value, the type of the fog coordinate array.
+The initial value is @code{GL_FLOAT}. See @code{glFogCoordPointer}.
+
+@item @code{GL_FOG_COORD_SRC}
+
+
+@var{params} returns one value, a symbolic constant indicating the
+source of the fog coordinate. The initial value is
+@code{GL_FRAGMENT_DEPTH}. See @code{glFog}.
+
+@item @code{GL_FOG_COLOR}
+
+
+@var{params} returns four values: the red, green, blue, and alpha
+components of the fog color. Integer values, if requested, are linearly
+mapped from the internal floating-point representation such that 1.0
+returns the most positive representable integer value, and @r{-1.0}
+returns the most negative representable integer value. The initial value
+is (0, 0, 0, 0). See @code{glFog}.
+
+@item @code{GL_FOG_DENSITY}
+
+
+@var{params} returns one value, the fog density parameter. The initial
+value is 1. See @code{glFog}.
+
+@item @code{GL_FOG_END}
+
+
+@var{params} returns one value, the end factor for the linear fog
+equation. The initial value is 1. See @code{glFog}.
+
+@item @code{GL_FOG_HINT}
+
+
+@var{params} returns one value, a symbolic constant indicating the mode
+of the fog hint. The initial value is @code{GL_DONT_CARE}. See
+@code{glHint}.
+
+@item @code{GL_FOG_INDEX}
+
+
+@var{params} returns one value, the fog color index. The initial value
+is 0. See @code{glFog}.
+
+@item @code{GL_FOG_MODE}
+
+
+@var{params} returns one value, a symbolic constant indicating which fog
+equation is selected. The initial value is @code{GL_EXP}. See
+@code{glFog}.
+
+@item @code{GL_FOG_START}
+
+
+@var{params} returns one value, the start factor for the linear fog
+equation. The initial value is 0. See @code{glFog}.
+
+@item @code{GL_FRAGMENT_SHADER_DERIVATIVE_HINT}
+
+
+@var{params} returns one value, a symbolic constant indicating the mode
+of the derivative accuracy hint for fragment shaders. The initial value
+is @code{GL_DONT_CARE}. See @code{glHint}.
+
+@item @code{GL_FRONT_FACE}
+
+
+@var{params} returns one value, a symbolic constant indicating whether
+clockwise or counterclockwise polygon winding is treated as
+front-facing. The initial value is @code{GL_CCW}. See
+@code{glFrontFace}.
+
+@item @code{GL_GENERATE_MIPMAP_HINT}
+
+
+@var{params} returns one value, a symbolic constant indicating the mode
+of the mipmap generation filtering hint. The initial value is
+@code{GL_DONT_CARE}. See @code{glHint}.
+
+@item @code{GL_GREEN_BIAS}
+
+
+@var{params} returns one value, the green bias factor used during pixel
+transfers. The initial value is 0.
+
+@item @code{GL_GREEN_BITS}
+
+
+@var{params} returns one value, the number of green bitplanes in each
+color buffer.
+
+@item @code{GL_GREEN_SCALE}
+
+
+@var{params} returns one value, the green scale factor used during pixel
+transfers. The initial value is 1. See @code{glPixelTransfer}.
+
+@item @code{GL_HISTOGRAM}
+
+
+@var{params} returns a single boolean value indicating whether histogram
+is enabled. The initial value is @code{GL_FALSE}. See
+@code{glHistogram}.
+
+@item @code{GL_INDEX_ARRAY}
+
+
+@var{params} returns a single boolean value indicating whether the color
+index array is enabled. The initial value is @code{GL_FALSE}. See
+@code{glIndexPointer}.
+
+@item @code{GL_INDEX_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+associated with the color index array. This buffer object would have
+been bound to the target @code{GL_ARRAY_BUFFER} at the time of the most
+recent call to @code{glIndexPointer}. If no buffer object was bound to
+this target, 0 is returned. The initial value is 0. See
+@code{glBindBuffer}.
+
+@item @code{GL_INDEX_ARRAY_STRIDE}
+
+
+@var{params} returns one value, the byte offset between consecutive
+color indexes in the color index array. The initial value is 0. See
+@code{glIndexPointer}.
+
+@item @code{GL_INDEX_ARRAY_TYPE}
+
+
+@var{params} returns one value, the data type of indexes in the color
+index array. The initial value is @code{GL_FLOAT}. See
+@code{glIndexPointer}.
+
+@item @code{GL_INDEX_BITS}
+
+
+@var{params} returns one value, the number of bitplanes in each color
+index buffer.
+
+@item @code{GL_INDEX_CLEAR_VALUE}
+
+
+@var{params} returns one value, the color index used to clear the color
+index buffers. The initial value is 0. See @code{glClearIndex}.
+
+@item @code{GL_INDEX_LOGIC_OP}
+
+
+@var{params} returns a single boolean value indicating whether a
+fragment's index values are merged into the framebuffer using a logical
+operation. The initial value is @code{GL_FALSE}. See @code{glLogicOp}.
+
+@item @code{GL_INDEX_MODE}
+
+
+@var{params} returns a single boolean value indicating whether the GL is
+in color index mode (@code{GL_TRUE}) or RGBA mode (@code{GL_FALSE}).
+
+@item @code{GL_INDEX_OFFSET}
+
+
+@var{params} returns one value, the offset added to color and stencil
+indices during pixel transfers. The initial value is 0. See
+@code{glPixelTransfer}.
+
+@item @code{GL_INDEX_SHIFT}
+
+
+@var{params} returns one value, the amount that color and stencil
+indices are shifted during pixel transfers. The initial value is 0. See
+@code{glPixelTransfer}.
+
+@item @code{GL_INDEX_WRITEMASK}
+
+
+@var{params} returns one value, a mask indicating which bitplanes of
+each color index buffer can be written. The initial value is all 1's.
+See @code{glIndexMask}.
+
+@item @code{GL_LIGHT}@var{i}
+
+
+@var{params} returns a single boolean value indicating whether the
+specified light is enabled. The initial value is @code{GL_FALSE}. See
+@code{glLight} and @code{glLightModel}.
+
+@item @code{GL_LIGHTING}
+
+
+@var{params} returns a single boolean value indicating whether lighting
+is enabled. The initial value is @code{GL_FALSE}. See
+@code{glLightModel}.
+
+@item @code{GL_LIGHT_MODEL_AMBIENT}
+
+
+@var{params} returns four values: the red, green, blue, and alpha
+components of the ambient intensity of the entire scene. Integer values,
+if requested, are linearly mapped from the internal floating-point
+representation such that 1.0 returns the most positive representable
+integer value, and @r{-1.0} returns the most negative representable
+integer value. The initial value is (0.2, 0.2, 0.2, 1.0). See
+@code{glLightModel}.
+
+@item @code{GL_LIGHT_MODEL_COLOR_CONTROL}
+
+
+@var{params} returns single enumerated value indicating whether specular
+reflection calculations are separated from normal lighting computations.
+The initial value is @code{GL_SINGLE_COLOR}.
+
+@item @code{GL_LIGHT_MODEL_LOCAL_VIEWER}
+
+
+@var{params} returns a single boolean value indicating whether specular
+reflection calculations treat the viewer as being local to the scene.
+The initial value is @code{GL_FALSE}. See @code{glLightModel}.
+
+@item @code{GL_LIGHT_MODEL_TWO_SIDE}
+
+
+@var{params} returns a single boolean value indicating whether separate
+materials are used to compute lighting for front- and back-facing
+polygons. The initial value is @code{GL_FALSE}. See @code{glLightModel}.
+
+@item @code{GL_LINE_SMOOTH}
+
+
+@var{params} returns a single boolean value indicating whether
+antialiasing of lines is enabled. The initial value is @code{GL_FALSE}.
+See @code{glLineWidth}.
+
+@item @code{GL_LINE_SMOOTH_HINT}
+
+
+@var{params} returns one value, a symbolic constant indicating the mode
+of the line antialiasing hint. The initial value is @code{GL_DONT_CARE}.
+See @code{glHint}.
+
+@item @code{GL_LINE_STIPPLE}
+
+
+@var{params} returns a single boolean value indicating whether stippling
+of lines is enabled. The initial value is @code{GL_FALSE}. See
+@code{glLineStipple}.
+
+@item @code{GL_LINE_STIPPLE_PATTERN}
+
+
+@var{params} returns one value, the 16-bit line stipple pattern. The
+initial value is all 1's. See @code{glLineStipple}.
+
+@item @code{GL_LINE_STIPPLE_REPEAT}
+
+
+@var{params} returns one value, the line stipple repeat factor. The
+initial value is 1. See @code{glLineStipple}.
+
+@item @code{GL_LINE_WIDTH}
+
+
+@var{params} returns one value, the line width as specified with
+@code{glLineWidth}. The initial value is 1.
+
+@item @code{GL_LINE_WIDTH_GRANULARITY}
+
+
+@var{params} returns one value, the width difference between adjacent
+supported widths for antialiased lines. See @code{glLineWidth}.
+
+@item @code{GL_LINE_WIDTH_RANGE}
+
+
+@var{params} returns two values: the smallest and largest supported
+widths for antialiased lines. See @code{glLineWidth}.
+
+@item @code{GL_LIST_BASE}
+
+
+@var{params} returns one value, the base offset added to all names in
+arrays presented to @code{glCallLists}. The initial value is 0. See
+@code{glListBase}.
+
+@item @code{GL_LIST_INDEX}
+
+
+@var{params} returns one value, the name of the display list currently
+under construction. 0 is returned if no display list is currently under
+construction. The initial value is 0. See @code{glNewList}.
+
+@item @code{GL_LIST_MODE}
+
+
+@var{params} returns one value, a symbolic constant indicating the
+construction mode of the display list currently under construction. The
+initial value is 0. See @code{glNewList}.
+
+@item @code{GL_LOGIC_OP_MODE}
+
+
+@var{params} returns one value, a symbolic constant indicating the
+selected logic operation mode. The initial value is @code{GL_COPY}. See
+@code{glLogicOp}.
+
+@item @code{GL_MAP1_COLOR_4}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates colors. The initial value is @code{GL_FALSE}. See
+@code{glMap1}.
+
+@item @code{GL_MAP1_GRID_DOMAIN}
+
+
+@var{params} returns two values: the endpoints of the 1D map's grid
+domain. The initial value is (0, 1). See @code{glMapGrid}.
+
+@item @code{GL_MAP1_GRID_SEGMENTS}
+
+
+@var{params} returns one value, the number of partitions in the 1D map's
+grid domain. The initial value is 1. See @code{glMapGrid}.
+
+@item @code{GL_MAP1_INDEX}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates color indices. The initial value is
+@code{GL_FALSE}. See @code{glMap1}.
+
+@item @code{GL_MAP1_NORMAL}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates normals. The initial value is @code{GL_FALSE}. See
+@code{glMap1}.
+
+@item @code{GL_MAP1_TEXTURE_COORD_1}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates 1D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap1}.
+
+@item @code{GL_MAP1_TEXTURE_COORD_2}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates 2D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap1}.
+
+@item @code{GL_MAP1_TEXTURE_COORD_3}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates 3D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap1}.
+
+@item @code{GL_MAP1_TEXTURE_COORD_4}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates 4D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap1}.
+
+@item @code{GL_MAP1_VERTEX_3}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates 3D vertex coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap1}.
+
+@item @code{GL_MAP1_VERTEX_4}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+evaluation generates 4D vertex coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap1}.
+
+@item @code{GL_MAP2_COLOR_4}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates colors. The initial value is @code{GL_FALSE}. See
+@code{glMap2}.
+
+@item @code{GL_MAP2_GRID_DOMAIN}
+
+
+@var{params} returns four values: the endpoints of the 2D map's
+@r{@var{i}} and @r{@var{j}} grid domains. The initial value is (0,1;
+0,1). See @code{glMapGrid}.
+
+@item @code{GL_MAP2_GRID_SEGMENTS}
+
+
+@var{params} returns two values: the number of partitions in the 2D
+map's @r{@var{i}} and @r{@var{j}} grid domains. The initial value is
+(1,1). See @code{glMapGrid}.
+
+@item @code{GL_MAP2_INDEX}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates color indices. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_MAP2_NORMAL}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates normals. The initial value is @code{GL_FALSE}. See
+@code{glMap2}.
+
+@item @code{GL_MAP2_TEXTURE_COORD_1}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates 1D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_MAP2_TEXTURE_COORD_2}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates 2D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_MAP2_TEXTURE_COORD_3}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates 3D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_MAP2_TEXTURE_COORD_4}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates 4D texture coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_MAP2_VERTEX_3}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates 3D vertex coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_MAP2_VERTEX_4}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+evaluation generates 4D vertex coordinates. The initial value is
+@code{GL_FALSE}. See @code{glMap2}.
+
+@item @code{GL_MAP_COLOR}
+
+
+@var{params} returns a single boolean value indicating if colors and
+color indices are to be replaced by table lookup during pixel transfers.
+The initial value is @code{GL_FALSE}. See @code{glPixelTransfer}.
+
+@item @code{GL_MAP_STENCIL}
+
+
+@var{params} returns a single boolean value indicating if stencil
+indices are to be replaced by table lookup during pixel transfers. The
+initial value is @code{GL_FALSE}. See @code{glPixelTransfer}.
+
+@item @code{GL_MATRIX_MODE}
+
+
+@var{params} returns one value, a symbolic constant indicating which
+matrix stack is currently the target of all matrix operations. The
+initial value is @code{GL_MODELVIEW}. See @code{glMatrixMode}.
+
+@item @code{GL_MAX_3D_TEXTURE_SIZE}
+
+
+@var{params} returns one value, a rough estimate of the largest 3D
+texture that the GL can handle. The value must be at least 16. If the GL
+version is 1.2 or greater, use @code{GL_PROXY_TEXTURE_3D} to determine
+if a texture is too large. See @code{glTexImage3D}.
+
+@item @code{GL_MAX_CLIENT_ATTRIB_STACK_DEPTH}
+
+
+@var{params} returns one value indicating the maximum supported depth of
+the client attribute stack. See @code{glPushClientAttrib}.
+
+@item @code{GL_MAX_ATTRIB_STACK_DEPTH}
+
+
+@var{params} returns one value, the maximum supported depth of the
+attribute stack. The value must be at least 16. See @code{glPushAttrib}.
+
+@item @code{GL_MAX_CLIP_PLANES}
+
+
+@var{params} returns one value, the maximum number of
+application-defined clipping planes. The value must be at least 6. See
+@code{glClipPlane}.
+
+@item @code{GL_MAX_COLOR_MATRIX_STACK_DEPTH}
+
+
+@var{params} returns one value, the maximum supported depth of the color
+matrix stack. The value must be at least 2. See @code{glPushMatrix}.
+
+@item @code{GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS}
+
+
+@var{params} returns one value, the maximum supported texture image
+units that can be used to access texture maps from the vertex shader and
+the fragment processor combined. If both the vertex shader and the
+fragment processing stage access the same texture image unit, then that
+counts as using two texture image units against this limit. The value
+must be at least 2. See @code{glActiveTexture}.
+
+@item @code{GL_MAX_CUBE_MAP_TEXTURE_SIZE}
+
+
+@var{params} returns one value. The value gives a rough estimate of the
+largest cube-map texture that the GL can handle. The value must be at
+least 16. If the GL version is 1.3 or greater, use
+@code{GL_PROXY_TEXTURE_CUBE_MAP} to determine if a texture is too large.
+See @code{glTexImage2D}.
+
+@item @code{GL_MAX_DRAW_BUFFERS}
+
+
+@var{params} returns one value, the maximum number of simultaneous
+output colors allowed from a fragment shader using the
+@code{gl_FragData} built-in array. The value must be at least 1. See
+@code{glDrawBuffers}.
+
+@item @code{GL_MAX_ELEMENTS_INDICES}
+
+
+@var{params} returns one value, the recommended maximum number of vertex
+array indices. See @code{glDrawRangeElements}.
+
+@item @code{GL_MAX_ELEMENTS_VERTICES}
+
+
+@var{params} returns one value, the recommended maximum number of vertex
+array vertices. See @code{glDrawRangeElements}.
+
+@item @code{GL_MAX_EVAL_ORDER}
+
+
+@var{params} returns one value, the maximum equation order supported by
+1D and 2D evaluators. The value must be at least 8. See @code{glMap1}
+and @code{glMap2}.
+
+@item @code{GL_MAX_FRAGMENT_UNIFORM_COMPONENTS}
+
+
+@var{params} returns one value, the maximum number of individual
+floating-point, integer, or boolean values that can be held in uniform
+variable storage for a fragment shader. The value must be at least 64.
+See @code{glUniform}.
+
+@item @code{GL_MAX_LIGHTS}
+
+
+@var{params} returns one value, the maximum number of lights. The value
+must be at least 8. See @code{glLight}.
+
+@item @code{GL_MAX_LIST_NESTING}
+
+
+@var{params} returns one value, the maximum recursion depth allowed
+during display-list traversal. The value must be at least 64. See
+@code{glCallList}.
+
+@item @code{GL_MAX_MODELVIEW_STACK_DEPTH}
+
+
+@var{params} returns one value, the maximum supported depth of the
+modelview matrix stack. The value must be at least 32. See
+@code{glPushMatrix}.
+
+@item @code{GL_MAX_NAME_STACK_DEPTH}
+
+
+@var{params} returns one value, the maximum supported depth of the
+selection name stack. The value must be at least 64. See
+@code{glPushName}.
+
+@item @code{GL_MAX_PIXEL_MAP_TABLE}
+
+
+@var{params} returns one value, the maximum supported size of a
+@code{glPixelMap} lookup table. The value must be at least 32. See
+@code{glPixelMap}.
+
+@item @code{GL_MAX_PROJECTION_STACK_DEPTH}
+
+
+@var{params} returns one value, the maximum supported depth of the
+projection matrix stack. The value must be at least 2. See
+@code{glPushMatrix}.
+
+@item @code{GL_MAX_TEXTURE_COORDS}
+
+
+@var{params} returns one value, the maximum number of texture coordinate
+sets available to vertex and fragment shaders. The value must be at
+least 2. See @code{glActiveTexture} and @code{glClientActiveTexture}.
+
+@item @code{GL_MAX_TEXTURE_IMAGE_UNITS}
+
+
+@var{params} returns one value, the maximum supported texture image
+units that can be used to access texture maps from the fragment shader.
+The value must be at least 2. See @code{glActiveTexture}.
+
+@item @code{GL_MAX_TEXTURE_LOD_BIAS}
+
+
+@var{params} returns one value, the maximum, absolute value of the
+texture level-of-detail bias. The value must be at least 4.
+
+@item @code{GL_MAX_TEXTURE_SIZE}
+
+
+@var{params} returns one value. The value gives a rough estimate of the
+largest texture that the GL can handle. The value must be at least 64.
+If the GL version is 1.1 or greater, use @code{GL_PROXY_TEXTURE_1D} or
+@code{GL_PROXY_TEXTURE_2D} to determine if a texture is too large. See
+@code{glTexImage1D} and @code{glTexImage2D}.
+
+@item @code{GL_MAX_TEXTURE_STACK_DEPTH}
+
+
+@var{params} returns one value, the maximum supported depth of the
+texture matrix stack. The value must be at least 2. See
+@code{glPushMatrix}.
+
+@item @code{GL_MAX_TEXTURE_UNITS}
+
+
+@var{params} returns a single value indicating the number of
+conventional texture units supported. Each conventional texture unit
+includes both a texture coordinate set and a texture image unit.
+Conventional texture units may be used for fixed-function (non-shader)
+rendering. The value must be at least 2. Additional texture coordinate
+sets and texture image units may be accessed from vertex and fragment
+shaders. See @code{glActiveTexture} and @code{glClientActiveTexture}.
+
+@item @code{GL_MAX_VARYING_FLOATS}
+
+
+@var{params} returns one value, the maximum number of interpolators
+available for processing varying variables used by vertex and fragment
+shaders. This value represents the number of individual floating-point
+values that can be interpolated; varying variables declared as vectors,
+matrices, and arrays will all consume multiple interpolators. The value
+must be at least 32.
+
+@item @code{GL_MAX_VERTEX_ATTRIBS}
+
+
+@var{params} returns one value, the maximum number of 4-component
+generic vertex attributes accessible to a vertex shader. The value must
+be at least 16. See @code{glVertexAttrib}.
+
+@item @code{GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS}
+
+
+@var{params} returns one value, the maximum supported texture image
+units that can be used to access texture maps from the vertex shader.
+The value may be 0. See @code{glActiveTexture}.
+
+@item @code{GL_MAX_VERTEX_UNIFORM_COMPONENTS}
+
+
+@var{params} returns one value, the maximum number of individual
+floating-point, integer, or boolean values that can be held in uniform
+variable storage for a vertex shader. The value must be at least 512.
+See @code{glUniform}.
+
+@item @code{GL_MAX_VIEWPORT_DIMS}
+
+
+@var{params} returns two values: the maximum supported width and height
+of the viewport. These must be at least as large as the visible
+dimensions of the display being rendered to. See @code{glViewport}.
+
+@item @code{GL_MINMAX}
+
+
+@var{params} returns a single boolean value indicating whether pixel
+minmax values are computed. The initial value is @code{GL_FALSE}. See
+@code{glMinmax}.
+
+@item @code{GL_MODELVIEW_MATRIX}
+
+
+@var{params} returns sixteen values: the modelview matrix on the top of
+the modelview matrix stack. Initially this matrix is the identity
+matrix. See @code{glPushMatrix}.
+
+@item @code{GL_MODELVIEW_STACK_DEPTH}
+
+
+@var{params} returns one value, the number of matrices on the modelview
+matrix stack. The initial value is 1. See @code{glPushMatrix}.
+
+@item @code{GL_NAME_STACK_DEPTH}
+
+
+@var{params} returns one value, the number of names on the selection
+name stack. The initial value is 0. See @code{glPushName}.
+
+@item @code{GL_NORMAL_ARRAY}
+
+
+@var{params} returns a single boolean value, indicating whether the
+normal array is enabled. The initial value is @code{GL_FALSE}. See
+@code{glNormalPointer}.
+
+@item @code{GL_NORMAL_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+associated with the normal array. This buffer object would have been
+bound to the target @code{GL_ARRAY_BUFFER} at the time of the most
+recent call to @code{glNormalPointer}. If no buffer object was bound to
+this target, 0 is returned. The initial value is 0. See
+@code{glBindBuffer}.
+
+@item @code{GL_NORMAL_ARRAY_STRIDE}
+
+
+@var{params} returns one value, the byte offset between consecutive
+normals in the normal array. The initial value is 0. See
+@code{glNormalPointer}.
+
+@item @code{GL_NORMAL_ARRAY_TYPE}
+
+
+@var{params} returns one value, the data type of each coordinate in the
+normal array. The initial value is @code{GL_FLOAT}. See
+@code{glNormalPointer}.
+
+@item @code{GL_NORMALIZE}
+
+
+@var{params} returns a single boolean value indicating whether normals
+are automatically scaled to unit length after they have been transformed
+to eye coordinates. The initial value is @code{GL_FALSE}. See
+@code{glNormal}.
+
+@item @code{GL_NUM_COMPRESSED_TEXTURE_FORMATS}
+
+
+@var{params} returns a single integer value indicating the number of
+available compressed texture formats. The minimum value is 0. See
+@code{glCompressedTexImage2D}.
+
+@item @code{GL_PACK_ALIGNMENT}
+
+
+@var{params} returns one value, the byte alignment used for writing
+pixel data to memory. The initial value is 4. See @code{glPixelStore}.
+
+@item @code{GL_PACK_IMAGE_HEIGHT}
+
+
+@var{params} returns one value, the image height used for writing pixel
+data to memory. The initial value is 0. See @code{glPixelStore}.
+
+@item @code{GL_PACK_LSB_FIRST}
+
+
+@var{params} returns a single boolean value indicating whether
+single-bit pixels being written to memory are written first to the least
+significant bit of each unsigned byte. The initial value is
+@code{GL_FALSE}. See @code{glPixelStore}.
+
+@item @code{GL_PACK_ROW_LENGTH}
+
+
+@var{params} returns one value, the row length used for writing pixel
+data to memory. The initial value is 0. See @code{glPixelStore}.
+
+@item @code{GL_PACK_SKIP_IMAGES}
+
+
+@var{params} returns one value, the number of pixel images skipped
+before the first pixel is written into memory. The initial value is 0.
+See @code{glPixelStore}.
+
+@item @code{GL_PACK_SKIP_PIXELS}
+
+
+@var{params} returns one value, the number of pixel locations skipped
+before the first pixel is written into memory. The initial value is 0.
+See @code{glPixelStore}.
+
+@item @code{GL_PACK_SKIP_ROWS}
+
+
+@var{params} returns one value, the number of rows of pixel locations
+skipped before the first pixel is written into memory. The initial value
+is 0. See @code{glPixelStore}.
+
+@item @code{GL_PACK_SWAP_BYTES}
+
+
+@var{params} returns a single boolean value indicating whether the bytes
+of two-byte and four-byte pixel indices and components are swapped
+before being written to memory. The initial value is @code{GL_FALSE}.
+See @code{glPixelStore}.
+
+@item @code{GL_PERSPECTIVE_CORRECTION_HINT}
+
+
+@var{params} returns one value, a symbolic constant indicating the mode
+of the perspective correction hint. The initial value is
+@code{GL_DONT_CARE}. See @code{glHint}.
+
+@item @code{GL_PIXEL_MAP_A_TO_A_SIZE}
+
+
+@var{params} returns one value, the size of the alpha-to-alpha pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_B_TO_B_SIZE}
+
+
+@var{params} returns one value, the size of the blue-to-blue pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_G_TO_G_SIZE}
+
+
+@var{params} returns one value, the size of the green-to-green pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_I_TO_A_SIZE}
+
+
+@var{params} returns one value, the size of the index-to-alpha pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_I_TO_B_SIZE}
+
+
+@var{params} returns one value, the size of the index-to-blue pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_I_TO_G_SIZE}
+
+
+@var{params} returns one value, the size of the index-to-green pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_I_TO_I_SIZE}
+
+
+@var{params} returns one value, the size of the index-to-index pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_I_TO_R_SIZE}
+
+
+@var{params} returns one value, the size of the index-to-red pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_R_TO_R_SIZE}
+
+
+@var{params} returns one value, the size of the red-to-red pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_MAP_S_TO_S_SIZE}
+
+
+@var{params} returns one value, the size of the stencil-to-stencil pixel
+translation table. The initial value is 1. See @code{glPixelMap}.
+
+@item @code{GL_PIXEL_PACK_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+currently bound to the target @code{GL_PIXEL_PACK_BUFFER}. If no buffer
+object is bound to this target, 0 is returned. The initial value is 0.
+See @code{glBindBuffer}.
+
+@item @code{GL_PIXEL_UNPACK_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+currently bound to the target @code{GL_PIXEL_UNPACK_BUFFER}. If no
+buffer object is bound to this target, 0 is returned. The initial value
+is 0. See @code{glBindBuffer}.
+
+@item @code{GL_POINT_DISTANCE_ATTENUATION}
+
+
+@var{params} returns three values, the coefficients for computing the
+attenuation value for points. See @code{glPointParameter}.
+
+@item @code{GL_POINT_FADE_THRESHOLD_SIZE}
+
+
+@var{params} returns one value, the point size threshold for determining
+the point size. See @code{glPointParameter}.
+
+@item @code{GL_POINT_SIZE}
+
+
+@var{params} returns one value, the point size as specified by
+@code{glPointSize}. The initial value is 1.
+
+@item @code{GL_POINT_SIZE_GRANULARITY}
+
+
+@var{params} returns one value, the size difference between adjacent
+supported sizes for antialiased points. See @code{glPointSize}.
+
+@item @code{GL_POINT_SIZE_MAX}
+
+
+@var{params} returns one value, the upper bound for the attenuated point
+sizes. The initial value is 0.0. See @code{glPointParameter}.
+
+@item @code{GL_POINT_SIZE_MIN}
+
+
+@var{params} returns one value, the lower bound for the attenuated point
+sizes. The initial value is 1.0. See @code{glPointParameter}.
+
+@item @code{GL_POINT_SIZE_RANGE}
+
+
+@var{params} returns two values: the smallest and largest supported
+sizes for antialiased points. The smallest size must be at most 1, and
+the largest size must be at least 1. See @code{glPointSize}.
+
+@item @code{GL_POINT_SMOOTH}
+
+
+@var{params} returns a single boolean value indicating whether
+antialiasing of points is enabled. The initial value is @code{GL_FALSE}.
+See @code{glPointSize}.
+
+@item @code{GL_POINT_SMOOTH_HINT}
+
+
+@var{params} returns one value, a symbolic constant indicating the mode
+of the point antialiasing hint. The initial value is
+@code{GL_DONT_CARE}. See @code{glHint}.
+
+@item @code{GL_POINT_SPRITE}
+
+
+@var{params} returns a single boolean value indicating whether point
+sprite is enabled. The initial value is @code{GL_FALSE}.
+
+@item @code{GL_POLYGON_MODE}
+
+
+@var{params} returns two values: symbolic constants indicating whether
+front-facing and back-facing polygons are rasterized as points, lines,
+or filled polygons. The initial value is @code{GL_FILL}. See
+@code{glPolygonMode}.
+
+@item @code{GL_POLYGON_OFFSET_FACTOR}
+
+
+@var{params} returns one value, the scaling factor used to determine the
+variable offset that is added to the depth value of each fragment
+generated when a polygon is rasterized. The initial value is 0. See
+@code{glPolygonOffset}.
+
+@item @code{GL_POLYGON_OFFSET_UNITS}
+
+
+@var{params} returns one value. This value is multiplied by an
+implementation-specific value and then added to the depth value of each
+fragment generated when a polygon is rasterized. The initial value is 0.
+See @code{glPolygonOffset}.
+
+@item @code{GL_POLYGON_OFFSET_FILL}
+
+
+@var{params} returns a single boolean value indicating whether polygon
+offset is enabled for polygons in fill mode. The initial value is
+@code{GL_FALSE}. See @code{glPolygonOffset}.
+
+@item @code{GL_POLYGON_OFFSET_LINE}
+
+
+@var{params} returns a single boolean value indicating whether polygon
+offset is enabled for polygons in line mode. The initial value is
+@code{GL_FALSE}. See @code{glPolygonOffset}.
+
+@item @code{GL_POLYGON_OFFSET_POINT}
+
+
+@var{params} returns a single boolean value indicating whether polygon
+offset is enabled for polygons in point mode. The initial value is
+@code{GL_FALSE}. See @code{glPolygonOffset}.
+
+@item @code{GL_POLYGON_SMOOTH}
+
+
+@var{params} returns a single boolean value indicating whether
+antialiasing of polygons is enabled. The initial value is
+@code{GL_FALSE}. See @code{glPolygonMode}.
+
+@item @code{GL_POLYGON_SMOOTH_HINT}
+
+
+@var{params} returns one value, a symbolic constant indicating the mode
+of the polygon antialiasing hint. The initial value is
+@code{GL_DONT_CARE}. See @code{glHint}.
+
+@item @code{GL_POLYGON_STIPPLE}
+
+
+@var{params} returns a single boolean value indicating whether polygon
+stippling is enabled. The initial value is @code{GL_FALSE}. See
+@code{glPolygonStipple}.
+
+@item @code{GL_POST_COLOR_MATRIX_COLOR_TABLE}
+
+
+@var{params} returns a single boolean value indicating whether post
+color matrix transformation lookup is enabled. The initial value is
+@code{GL_FALSE}. See @code{glColorTable}.
+
+@item @code{GL_POST_COLOR_MATRIX_RED_BIAS}
+
+
+@var{params} returns one value, the red bias factor applied to RGBA
+fragments after color matrix transformations. The initial value is 0.
+See @code{glPixelTransfer}.
+
+@item @code{GL_POST_COLOR_MATRIX_GREEN_BIAS}
+
+
+@var{params} returns one value, the green bias factor applied to RGBA
+fragments after color matrix transformations. The initial value is 0.
+See @code{glPixelTransfer}
+
+@item @code{GL_POST_COLOR_MATRIX_BLUE_BIAS}
+
+
+@var{params} returns one value, the blue bias factor applied to RGBA
+fragments after color matrix transformations. The initial value is 0.
+See @code{glPixelTransfer}.
+
+@item @code{GL_POST_COLOR_MATRIX_ALPHA_BIAS}
+
+
+@var{params} returns one value, the alpha bias factor applied to RGBA
+fragments after color matrix transformations. The initial value is 0.
+See @code{glPixelTransfer}.
+
+@item @code{GL_POST_COLOR_MATRIX_RED_SCALE}
+
+
+@var{params} returns one value, the red scale factor applied to RGBA
+fragments after color matrix transformations. The initial value is 1.
+See @code{glPixelTransfer}.
+
+@item @code{GL_POST_COLOR_MATRIX_GREEN_SCALE}
+
+
+@var{params} returns one value, the green scale factor applied to RGBA
+fragments after color matrix transformations. The initial value is 1.
+See @code{glPixelTransfer}.
+
+@item @code{GL_POST_COLOR_MATRIX_BLUE_SCALE}
+
+
+@var{params} returns one value, the blue scale factor applied to RGBA
+fragments after color matrix transformations. The initial value is 1.
+See @code{glPixelTransfer}.
+
+@item @code{GL_POST_COLOR_MATRIX_ALPHA_SCALE}
+
+
+@var{params} returns one value, the alpha scale factor applied to RGBA
+fragments after color matrix transformations. The initial value is 1.
+See @code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_COLOR_TABLE}
+
+
+@var{params} returns a single boolean value indicating whether post
+convolution lookup is enabled. The initial value is @code{GL_FALSE}. See
+@code{glColorTable}.
+
+@item @code{GL_POST_CONVOLUTION_RED_BIAS}
+
+
+@var{params} returns one value, the red bias factor applied to RGBA
+fragments after convolution. The initial value is 0. See
+@code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_GREEN_BIAS}
+
+
+@var{params} returns one value, the green bias factor applied to RGBA
+fragments after convolution. The initial value is 0. See
+@code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_BLUE_BIAS}
+
+
+@var{params} returns one value, the blue bias factor applied to RGBA
+fragments after convolution. The initial value is 0. See
+@code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_ALPHA_BIAS}
+
+
+@var{params} returns one value, the alpha bias factor applied to RGBA
+fragments after convolution. The initial value is 0. See
+@code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_RED_SCALE}
+
+
+@var{params} returns one value, the red scale factor applied to RGBA
+fragments after convolution. The initial value is 1. See
+@code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_GREEN_SCALE}
+
+
+@var{params} returns one value, the green scale factor applied to RGBA
+fragments after convolution. The initial value is 1. See
+@code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_BLUE_SCALE}
+
+
+@var{params} returns one value, the blue scale factor applied to RGBA
+fragments after convolution. The initial value is 1. See
+@code{glPixelTransfer}.
+
+@item @code{GL_POST_CONVOLUTION_ALPHA_SCALE}
+
+
+@var{params} returns one value, the alpha scale factor applied to RGBA
+fragments after convolution. The initial value is 1. See
+@code{glPixelTransfer}.
+
+@item @code{GL_PROJECTION_MATRIX}
+
+
+@var{params} returns sixteen values: the projection matrix on the top of
+the projection matrix stack. Initially this matrix is the identity
+matrix. See @code{glPushMatrix}.
+
+@item @code{GL_PROJECTION_STACK_DEPTH}
+
+
+@var{params} returns one value, the number of matrices on the projection
+matrix stack. The initial value is 1. See @code{glPushMatrix}.
+
+@item @code{GL_READ_BUFFER}
+
+
+@var{params} returns one value, a symbolic constant indicating which
+color buffer is selected for reading. The initial value is
+@code{GL_BACK} if there is a back buffer, otherwise it is
+@code{GL_FRONT}. See @code{glReadPixels} and @code{glAccum}.
+
+@item @code{GL_RED_BIAS}
+
+
+@var{params} returns one value, the red bias factor used during pixel
+transfers. The initial value is 0.
+
+@item @code{GL_RED_BITS}
+
+
+@var{params} returns one value, the number of red bitplanes in each
+color buffer.
+
+@item @code{GL_RED_SCALE}
+
+
+@var{params} returns one value, the red scale factor used during pixel
+transfers. The initial value is 1. See @code{glPixelTransfer}.
+
+@item @code{GL_RENDER_MODE}
+
+
+@var{params} returns one value, a symbolic constant indicating whether
+the GL is in render, select, or feedback mode. The initial value is
+@code{GL_RENDER}. See @code{glRenderMode}.
+
+@item @code{GL_RESCALE_NORMAL}
+
+
+@var{params} returns single boolean value indicating whether normal
+rescaling is enabled. See @code{glEnable}.
+
+@item @code{GL_RGBA_MODE}
+
+
+@var{params} returns a single boolean value indicating whether the GL is
+in RGBA mode (true) or color index mode (false). See @code{glColor}.
+
+@item @code{GL_SAMPLE_BUFFERS}
+
+
+@var{params} returns a single integer value indicating the number of
+sample buffers associated with the framebuffer. See
+@code{glSampleCoverage}.
+
+@item @code{GL_SAMPLE_COVERAGE_VALUE}
+
+
+@var{params} returns a single positive floating-point value indicating
+the current sample coverage value. See @code{glSampleCoverage}.
+
+@item @code{GL_SAMPLE_COVERAGE_INVERT}
+
+
+@var{params} returns a single boolean value indicating if the temporary
+coverage value should be inverted. See @code{glSampleCoverage}.
+
+@item @code{GL_SAMPLES}
+
+
+@var{params} returns a single integer value indicating the coverage mask
+size. See @code{glSampleCoverage}.
+
+@item @code{GL_SCISSOR_BOX}
+
+
+@var{params} returns four values: the @r{@var{x}} and @r{@var{y}} window
+coordinates of the scissor box, followed by its width and height.
+Initially the @r{@var{x}} and @r{@var{y}} window coordinates are both 0
+and the width and height are set to the size of the window. See
+@code{glScissor}.
+
+@item @code{GL_SCISSOR_TEST}
+
+
+@var{params} returns a single boolean value indicating whether
+scissoring is enabled. The initial value is @code{GL_FALSE}. See
+@code{glScissor}.
+
+@item @code{GL_SECONDARY_COLOR_ARRAY}
+
+
+@var{params} returns a single boolean value indicating whether the
+secondary color array is enabled. The initial value is @code{GL_FALSE}.
+See @code{glSecondaryColorPointer}.
+
+@item @code{GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+associated with the secondary color array. This buffer object would have
+been bound to the target @code{GL_ARRAY_BUFFER} at the time of the most
+recent call to @code{glSecondaryColorPointer}. If no buffer object was
+bound to this target, 0 is returned. The initial value is 0. See
+@code{glBindBuffer}.
+
+@item @code{GL_SECONDARY_COLOR_ARRAY_SIZE}
+
+
+@var{params} returns one value, the number of components per color in
+the secondary color array. The initial value is 3. See
+@code{glSecondaryColorPointer}.
+
+@item @code{GL_SECONDARY_COLOR_ARRAY_STRIDE}
+
+
+@var{params} returns one value, the byte offset between consecutive
+colors in the secondary color array. The initial value is 0. See
+@code{glSecondaryColorPointer}.
+
+@item @code{GL_SECONDARY_COLOR_ARRAY_TYPE}
+
+
+@var{params} returns one value, the data type of each component in the
+secondary color array. The initial value is @code{GL_FLOAT}. See
+@code{glSecondaryColorPointer}.
+
+@item @code{GL_SELECTION_BUFFER_SIZE}
+
+
+@var{params} return one value, the size of the selection buffer. See
+@code{glSelectBuffer}.
+
+@item @code{GL_SEPARABLE_2D}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+separable convolution is enabled. The initial value is @code{GL_FALSE}.
+See @code{glSeparableFilter2D}.
+
+@item @code{GL_SHADE_MODEL}
+
+
+@var{params} returns one value, a symbolic constant indicating whether
+the shading mode is flat or smooth. The initial value is
+@code{GL_SMOOTH}. See @code{glShadeModel}.
+
+@item @code{GL_SMOOTH_LINE_WIDTH_RANGE}
+
+
+@var{params} returns two values, the smallest and largest supported
+widths for antialiased lines. See @code{glLineWidth}.
+
+@item @code{GL_SMOOTH_LINE_WIDTH_GRANULARITY}
+
+
+@var{params} returns one value, the granularity of widths for
+antialiased lines. See @code{glLineWidth}.
+
+@item @code{GL_SMOOTH_POINT_SIZE_RANGE}
+
+
+@var{params} returns two values, the smallest and largest supported
+widths for antialiased points. See @code{glPointSize}.
+
+@item @code{GL_SMOOTH_POINT_SIZE_GRANULARITY}
+
+
+@var{params} returns one value, the granularity of sizes for antialiased
+points. See @code{glPointSize}.
+
+@item @code{GL_STENCIL_BACK_FAIL}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+action is taken for back-facing polygons when the stencil test fails.
+The initial value is @code{GL_KEEP}. See @code{glStencilOpSeparate}.
+
+@item @code{GL_STENCIL_BACK_FUNC}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+function is used for back-facing polygons to compare the stencil
+reference value with the stencil buffer value. The initial value is
+@code{GL_ALWAYS}. See @code{glStencilFuncSeparate}.
+
+@item @code{GL_STENCIL_BACK_PASS_DEPTH_FAIL}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+action is taken for back-facing polygons when the stencil test passes,
+but the depth test fails. The initial value is @code{GL_KEEP}. See
+@code{glStencilOpSeparate}.
+
+@item @code{GL_STENCIL_BACK_PASS_DEPTH_PASS}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+action is taken for back-facing polygons when the stencil test passes
+and the depth test passes. The initial value is @code{GL_KEEP}. See
+@code{glStencilOpSeparate}.
+
+@item @code{GL_STENCIL_BACK_REF}
+
+
+@var{params} returns one value, the reference value that is compared
+with the contents of the stencil buffer for back-facing polygons. The
+initial value is 0. See @code{glStencilFuncSeparate}.
+
+@item @code{GL_STENCIL_BACK_VALUE_MASK}
+
+
+@var{params} returns one value, the mask that is used for back-facing
+polygons to mask both the stencil reference value and the stencil buffer
+value before they are compared. The initial value is all 1's. See
+@code{glStencilFuncSeparate}.
+
+@item @code{GL_STENCIL_BACK_WRITEMASK}
+
+
+@var{params} returns one value, the mask that controls writing of the
+stencil bitplanes for back-facing polygons. The initial value is all
+1's. See @code{glStencilMaskSeparate}.
+
+@item @code{GL_STENCIL_BITS}
+
+
+@var{params} returns one value, the number of bitplanes in the stencil
+buffer.
+
+@item @code{GL_STENCIL_CLEAR_VALUE}
+
+
+@var{params} returns one value, the index to which the stencil bitplanes
+are cleared. The initial value is 0. See @code{glClearStencil}.
+
+@item @code{GL_STENCIL_FAIL}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+action is taken when the stencil test fails. The initial value is
+@code{GL_KEEP}. See @code{glStencilOp}. If the GL version is 2.0 or
+greater, this stencil state only affects non-polygons and front-facing
+polygons. Back-facing polygons use separate stencil state. See
+@code{glStencilOpSeparate}.
+
+@item @code{GL_STENCIL_FUNC}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+function is used to compare the stencil reference value with the stencil
+buffer value. The initial value is @code{GL_ALWAYS}. See
+@code{glStencilFunc}. If the GL version is 2.0 or greater, this stencil
+state only affects non-polygons and front-facing polygons. Back-facing
+polygons use separate stencil state. See @code{glStencilFuncSeparate}.
+
+@item @code{GL_STENCIL_PASS_DEPTH_FAIL}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+action is taken when the stencil test passes, but the depth test fails.
+The initial value is @code{GL_KEEP}. See @code{glStencilOp}. If the GL
+version is 2.0 or greater, this stencil state only affects non-polygons
+and front-facing polygons. Back-facing polygons use separate stencil
+state. See @code{glStencilOpSeparate}.
+
+@item @code{GL_STENCIL_PASS_DEPTH_PASS}
+
+
+@var{params} returns one value, a symbolic constant indicating what
+action is taken when the stencil test passes and the depth test passes.
+The initial value is @code{GL_KEEP}. See @code{glStencilOp}. If the GL
+version is 2.0 or greater, this stencil state only affects non-polygons
+and front-facing polygons. Back-facing polygons use separate stencil
+state. See @code{glStencilOpSeparate}.
+
+@item @code{GL_STENCIL_REF}
+
+
+@var{params} returns one value, the reference value that is compared
+with the contents of the stencil buffer. The initial value is 0. See
+@code{glStencilFunc}. If the GL version is 2.0 or greater, this stencil
+state only affects non-polygons and front-facing polygons. Back-facing
+polygons use separate stencil state. See @code{glStencilFuncSeparate}.
+
+@item @code{GL_STENCIL_TEST}
+
+
+@var{params} returns a single boolean value indicating whether stencil
+testing of fragments is enabled. The initial value is @code{GL_FALSE}.
+See @code{glStencilFunc} and @code{glStencilOp}.
+
+@item @code{GL_STENCIL_VALUE_MASK}
+
+
+@var{params} returns one value, the mask that is used to mask both the
+stencil reference value and the stencil buffer value before they are
+compared. The initial value is all 1's. See @code{glStencilFunc}. If the
+GL version is 2.0 or greater, this stencil state only affects
+non-polygons and front-facing polygons. Back-facing polygons use
+separate stencil state. See @code{glStencilFuncSeparate}.
+
+@item @code{GL_STENCIL_WRITEMASK}
+
+
+@var{params} returns one value, the mask that controls writing of the
+stencil bitplanes. The initial value is all 1's. See
+@code{glStencilMask}. If the GL version is 2.0 or greater, this stencil
+state only affects non-polygons and front-facing polygons. Back-facing
+polygons use separate stencil state. See @code{glStencilMaskSeparate}.
+
+@item @code{GL_STEREO}
+
+
+@var{params} returns a single boolean value indicating whether stereo
+buffers (left and right) are supported.
+
+@item @code{GL_SUBPIXEL_BITS}
+
+
+@var{params} returns one value, an estimate of the number of bits of
+subpixel resolution that are used to position rasterized geometry in
+window coordinates. The value must be at least 4.
+
+@item @code{GL_TEXTURE_1D}
+
+
+@var{params} returns a single boolean value indicating whether 1D
+texture mapping is enabled. The initial value is @code{GL_FALSE}. See
+@code{glTexImage1D}.
+
+@item @code{GL_TEXTURE_BINDING_1D}
+
+
+@var{params} returns a single value, the name of the texture currently
+bound to the target @code{GL_TEXTURE_1D}. The initial value is 0. See
+@code{glBindTexture}.
+
+@item @code{GL_TEXTURE_2D}
+
+
+@var{params} returns a single boolean value indicating whether 2D
+texture mapping is enabled. The initial value is @code{GL_FALSE}. See
+@code{glTexImage2D}.
+
+@item @code{GL_TEXTURE_BINDING_2D}
+
+
+@var{params} returns a single value, the name of the texture currently
+bound to the target @code{GL_TEXTURE_2D}. The initial value is 0. See
+@code{glBindTexture}.
+
+@item @code{GL_TEXTURE_3D}
+
+
+@var{params} returns a single boolean value indicating whether 3D
+texture mapping is enabled. The initial value is @code{GL_FALSE}. See
+@code{glTexImage3D}.
+
+@item @code{GL_TEXTURE_BINDING_3D}
+
+
+@var{params} returns a single value, the name of the texture currently
+bound to the target @code{GL_TEXTURE_3D}. The initial value is 0. See
+@code{glBindTexture}.
+
+@item @code{GL_TEXTURE_BINDING_CUBE_MAP}
+
+
+@var{params} returns a single value, the name of the texture currently
+bound to the target @code{GL_TEXTURE_CUBE_MAP}. The initial value is 0.
+See @code{glBindTexture}.
+
+@item @code{GL_TEXTURE_COMPRESSION_HINT}
+
+
+@var{params} returns a single value indicating the mode of the texture
+compression hint. The initial value is @code{GL_DONT_CARE}.
+
+@item @code{GL_TEXTURE_COORD_ARRAY}
+
+
+@var{params} returns a single boolean value indicating whether the
+texture coordinate array is enabled. The initial value is
+@code{GL_FALSE}. See @code{glTexCoordPointer}.
+
+@item @code{GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING}
+
+
+@var{params} returns a single value, the name of the buffer object
+associated with the texture coordinate array. This buffer object would
+have been bound to the target @code{GL_ARRAY_BUFFER} at the time of the
+most recent call to @code{glTexCoordPointer}. If no buffer object was
+bound to this target, 0 is returned. The initial value is 0. See
+@code{glBindBuffer}.
+
+@item @code{GL_TEXTURE_COORD_ARRAY_SIZE}
+
+
+@var{params} returns one value, the number of coordinates per element in
+the texture coordinate array. The initial value is 4. See
+@code{glTexCoordPointer}.
+
+@item @code{GL_TEXTURE_COORD_ARRAY_STRIDE}
+
+
+@var{params} returns one value, the byte offset between consecutive
+elements in the texture coordinate array. The initial value is 0. See
+@code{glTexCoordPointer}.
+
+@item @code{GL_TEXTURE_COORD_ARRAY_TYPE}
+
+
+@var{params} returns one value, the data type of the coordinates in the
+texture coordinate array. The initial value is @code{GL_FLOAT}. See
+@code{glTexCoordPointer}.
+
+@item @code{GL_TEXTURE_CUBE_MAP}
+
+
+@var{params} returns a single boolean value indicating whether
+cube-mapped texture mapping is enabled. The initial value is
+@code{GL_FALSE}. See @code{glTexImage2D}.
+
+@item @code{GL_TEXTURE_GEN_Q}
+
+
+@var{params} returns a single boolean value indicating whether automatic
+generation of the @var{q} texture coordinate is enabled. The initial
+value is @code{GL_FALSE}. See @code{glTexGen}.
+
+@item @code{GL_TEXTURE_GEN_R}
+
+
+@var{params} returns a single boolean value indicating whether automatic
+generation of the @var{r} texture coordinate is enabled. The initial
+value is @code{GL_FALSE}. See @code{glTexGen}.
+
+@item @code{GL_TEXTURE_GEN_S}
+
+
+@var{params} returns a single boolean value indicating whether automatic
+generation of the @var{S} texture coordinate is enabled. The initial
+value is @code{GL_FALSE}. See @code{glTexGen}.
+
+@item @code{GL_TEXTURE_GEN_T}
+
+
+@var{params} returns a single boolean value indicating whether automatic
+generation of the T texture coordinate is enabled. The initial value is
+@code{GL_FALSE}. See @code{glTexGen}.
+
+@item @code{GL_TEXTURE_MATRIX}
+
+
+@var{params} returns sixteen values: the texture matrix on the top of
+the texture matrix stack. Initially this matrix is the identity matrix.
+See @code{glPushMatrix}.
+
+@item @code{GL_TEXTURE_STACK_DEPTH}
+
+
+@var{params} returns one value, the number of matrices on the texture
+matrix stack. The initial value is 1. See @code{glPushMatrix}.
+
+@item @code{GL_TRANSPOSE_COLOR_MATRIX}
+
+
+@var{params} returns 16 values, the elements of the color matrix in
+row-major order. See @code{glLoadTransposeMatrix}.
+
+@item @code{GL_TRANSPOSE_MODELVIEW_MATRIX}
+
+
+@var{params} returns 16 values, the elements of the modelview matrix in
+row-major order. See @code{glLoadTransposeMatrix}.
+
+@item @code{GL_TRANSPOSE_PROJECTION_MATRIX}
+
+
+@var{params} returns 16 values, the elements of the projection matrix in
+row-major order. See @code{glLoadTransposeMatrix}.
+
+@item @code{GL_TRANSPOSE_TEXTURE_MATRIX}
+
+
+@var{params} returns 16 values, the elements of the texture matrix in
+row-major order. See @code{glLoadTransposeMatrix}.
+
+@item @code{GL_UNPACK_ALIGNMENT}
+
+
+@var{params} returns one value, the byte alignment used for reading
+pixel data from memory. The initial value is 4. See @code{glPixelStore}.
+
+@item @code{GL_UNPACK_IMAGE_HEIGHT}
+
+
+@var{params} returns one value, the image height used for reading pixel
+data from memory. The initial is 0. See @code{glPixelStore}.
+
+@item @code{GL_UNPACK_LSB_FIRST}
+
+
+@var{params} returns a single boolean value indicating whether
+single-bit pixels being read from memory are read first from the least
+significant bit of each unsigned byte. The initial value is
+@code{GL_FALSE}. See @code{glPixelStore}.
+
+@item @code{GL_UNPACK_ROW_LENGTH}
+
+
+@var{params} returns one value, the row length used for reading pixel
+data from memory. The initial value is 0. See @code{glPixelStore}.
+
+@item @code{GL_UNPACK_SKIP_IMAGES}
+
+
+@var{params} returns one value, the number of pixel images skipped
+before the first pixel is read from memory. The initial value is 0. See
+@code{glPixelStore}.
+
+@item @code{GL_UNPACK_SKIP_PIXELS}
+
+
+@var{params} returns one value, the number of pixel locations skipped
+before the first pixel is read from memory. The initial value is 0. See
+@code{glPixelStore}.
+
+@item @code{GL_UNPACK_SKIP_ROWS}