1991-2006
Silicon Graphics, Inc.
glHint
3G

# glHint

specify implementation-specific hints

## C Specification

                    void glHint
                    GLenum target
                    GLenum mode

## Parameters

`target`

  Specifies a symbolic constant indicating the behavior to be controlled. `GL_FOG_HINT`, `GL_GENERATE_MIPMAP_HINT`, `GL_LINE_SMOOTH_HINT`, `GL_PERSPECTIVE_CORRECTION_HINT`, `GL_POINT_SMOOTH_HINT`, `GL_POLYGON_SMOOTH_HINT`, `GL_TEXTURE_COMPRESSION_HINT`, and `GL_FRAGMENT_SHADER_DERIVATIVE_HINT` are accepted.

`mode`

  Specifies a symbolic constant indicating the desired behavior. `GL_FASTEST`, `GL_NICEST`, and `GL_DONT_CARE` are accepted.

## Description

Certain aspects of GL behavior, when there is room for interpretation, can be controlled with hints. A hint is specified with two arguments. `target` is a symbolic constant indicating the behavior to be controlled, and `mode` is another symbolic constant indicating the desired behavior. The initial value for each `target` is `GL_DONT_CARE`. `mode` can be one of the following:

`GL_FASTEST`

  The most efficient option should be chosen.

`GL_NICEST`

  The most correct, or highest quality, option should be chosen.

`GL_DONT_CARE`

  No preference.

Though the implementation aspects that can be hinted are well defined, the interpretation of the hints depends on the implementation. The hint aspects that can be specified with `target`, along with suggested semantics, are as follows:

`GL_FOG_HINT`

  Indicates the accuracy of fog calculation. If per-pixel fog calculation is not efficiently supported by the GL implementation, hinting `GL_DONT_CARE` or `GL_FASTEST` can result in per-vertex calculation of fog effects.

`GL_FRAGMENT_SHADER_DERIVATIVE_HINT`

  Indicates the accuracy of the derivative calculation for the GL shading language fragment processing built-in functions: `dFdx`, `dFdy`, and `fwidth`.

`GL_GENERATE_MIPMAP_HINT`

  Indicates the quality of filtering when generating mipmap images.

`GL_LINE_SMOOTH_HINT`

  Indicates the sampling quality of antialiased lines. If a larger filter function is applied, hinting `GL_NICEST` can result in more pixel fragments being generated during rasterization.

`GL_PERSPECTIVE_CORRECTION_HINT`

  Indicates the quality of color, texture coordinate, and fog coordinate interpolation. If perspective-corrected parameter interpolation is not efficiently supported by the GL implementation, hinting `GL_DONT_CARE` or `GL_FASTEST` can result in simple linear interpolation of colors and/or texture coordinates.

`GL_POINT_SMOOTH_HINT`

  Indicates the sampling quality of antialiased points. If a larger filter function is applied, hinting `GL_NICEST` can result in more pixel fragments being generated during rasterization.

`GL_POLYGON_SMOOTH_HINT`

  Indicates the sampling quality of antialiased polygons. Hinting `GL_NICEST` can result in more pixel fragments being generated during rasterization, if a larger filter function is applied.

`GL_TEXTURE_COMPRESSION_HINT`

  Indicates the quality and performance of the compressing texture images. Hinting `GL_FASTEST` indicates that texture images should be compressed as quickly as possible, while `GL_NICEST` indicates that texture images should be compressed with as little image quality loss as possible. `GL_NICEST` should be selected if the texture is to be retrieved by glGetCompressedTexImage for reuse.

## Notes

The interpretation of hints depends on the implementation. Some implementations ignore `glHint` settings.

`GL_TEXTURE_COMPRESSION_HINT` is available only if the GL version is 1.3 or greater.

`GL_GENERATE_MIPMAP_HINT` is available only if the GL version is 1.4 or greater.

`GL_FRAGMENT_SHADER_DERIVATIVE_HINT` is available only if the GL version is 2.0 or greater.

## Errors

`GL_INVALID_ENUM` is generated if either `target` or `mode` is not an accepted value.

`GL_INVALID_OPERATION` is generated if `glHint` is executed between the execution of glBegin and the corresponding execution of glEnd.

## Copyright

Copyright 1991-2006 Silicon Graphics, Inc. This document is licensed under the SGI Free Software B License. For details, see http://oss.sgi.com/projects/FreeB/.