## javax.media.opengl.glu
Class GLU

    java.lang.Object
      javax.media.opengl.glu.GLU

    public class GLU

extends Object

Provides access to the OpenGL Utility Library (GLU). This library provides standard methods for setting up view volumes, building mipmaps and performing other common operations. The GLU NURBS routines are not currently exposed.

Notes from the Reference Implementation for this class: Thanks to the contributions of many individuals, this class is a pure Java port of SGI's original C sources. All of the projection, mipmap, scaling, and tessellation routines that are exposed are compatible with the GLU 1.3 specification. The GLU NURBS routines are not currently exposed.

Field Summary
`static String` `extensionString`
`static int` `GLU_BEGIN`
`static int` `GLU_CCW`
`static int` `GLU_CW`
`static int` `GLU_EDGE_FLAG`
`static int` `GLU_END`
`static int` `GLU_ERROR`
`static int` `GLU_EXTENSIONS`
`static int` `GLU_EXTERIOR`
`static int` `GLU_FALSE`
`static int` `GLU_FILL`
`static int` `GLU_FLAT`
`static int` `GLU_INSIDE`
`static int` `GLU_INTERIOR`
`static int` `GLU_INVALID_ENUM`
`static int` `GLU_INVALID_OPERATION`
`static int` `GLU_INVALID_VALUE`
`static int` `GLU_LINE`
`static int` `GLU_NONE`
`static int` `GLU_OUT_OF_MEMORY`
`static int` `GLU_OUTSIDE`
`static int` `GLU_POINT`
`static int` `GLU_SILHOUETTE`
`static int` `GLU_SMOOTH`
`static int` `GLU_TESS_BEGIN`
`static int` `GLU_TESS_BEGIN_DATA`
`static int` `GLU_TESS_BOUNDARY_ONLY`
`static int` `GLU_TESS_COMBINE`
`static int` `GLU_TESS_COMBINE_DATA`
`static int` `GLU_TESS_COORD_TOO_LARGE`
`static int` `GLU_TESS_EDGE_FLAG`
`static int` `GLU_TESS_EDGE_FLAG_DATA`
`static int` `GLU_TESS_END`
`static int` `GLU_TESS_END_DATA`
`static int` `GLU_TESS_ERROR`
`static int` `GLU_TESS_ERROR_DATA`
`static int` `GLU_TESS_ERROR1`
`static int` `GLU_TESS_ERROR2`
`static int` `GLU_TESS_ERROR3`
`static int` `GLU_TESS_ERROR4`
`static int` `GLU_TESS_ERROR5`
`static int` `GLU_TESS_ERROR6`
`static int` `GLU_TESS_ERROR7`
`static int` `GLU_TESS_ERROR8`
`static double` `GLU_TESS_MAX_COORD`
`static int` `GLU_TESS_MISSING_BEGIN_CONTOUR`
`static int` `GLU_TESS_MISSING_BEGIN_POLYGON`
`static int` `GLU_TESS_MISSING_END_CONTOUR`
`static int` `GLU_TESS_MISSING_END_POLYGON`
`static int` `GLU_TESS_NEED_COMBINE_CALLBACK`
`static int` `GLU_TESS_TOLERANCE`
`static int` `GLU_TESS_VERTEX`
`static int` `GLU_TESS_VERTEX_DATA`
`static int` `GLU_TESS_WINDING_ABS_GEQ_TWO`
`static int` `GLU_TESS_WINDING_NEGATIVE`
`static int` `GLU_TESS_WINDING_NONZERO`
`static int` `GLU_TESS_WINDING_ODD`
`static int` `GLU_TESS_WINDING_POSITIVE`
`static int` `GLU_TESS_WINDING_RULE`
`static int` `GLU_TRUE`
`static int` `GLU_UNKNOWN`
`static int` `GLU_VERSION`
`static int` `GLU_VERTEX`
`static String` `versionString`

Constructor Summary
`GLU()` Instantiates a new OpenGL Utility Library object.

Method Summary
`static GL` `getCurrentGL()` Returns the GL object associated with the OpenGL context current on the current thread.
`void` `gluBeginCurve(GLUnurbs r)` Begins a curve definition.
`void` `gluBeginPolygon(GLUtessellator tessellator)` gluBeginPolygon and `gluEndPolygon` delimit the definition of a nonconvex polygon.
`void` `gluBeginSurface(GLUnurbs r)` Begins a surface definition.
`int` `gluBuild1DMipmapLevels(int target, int internalFormat, int width, int format, int type, int level, int base, int max, Buffer data)` Interface to C language function: `GLint gluBuild1DMipmapLevels(GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void * data);`
`int` `gluBuild1DMipmaps(int target, int internalFormat, int width, int format, int type, Buffer data)` Interface to C language function: `GLint gluBuild1DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void * data);`
`int` `gluBuild2DMipmapLevels(int target, int internalFormat, int width, int height, int format, int type, int level, int base, int max, Buffer data)` Interface to C language function: `GLint gluBuild2DMipmapLevels(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void * data);`
`int` `gluBuild2DMipmaps(int target, int internalFormat, int width, int height, int format, int type, Buffer data)` Interface to C language function: `GLint gluBuild2DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * data);`
`int` `gluBuild3DMipmapLevels(int target, int internalFormat, int width, int height, int depth, int format, int type, int level, int base, int max, Buffer data)` Interface to C language function: `GLint gluBuild3DMipmapLevels(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void * data);`
`int` `gluBuild3DMipmaps(int target, int internalFormat, int width, int height, int depth, int format, int type, Buffer data)` Interface to C language function: `GLint gluBuild3DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data);`
`boolean` `gluCheckExtension(String extName, String extString)`
`void` `gluCylinder(GLUquadric quad, double base, double top, double height, int slices, int stacks)` Interface to C language function: `void gluCylinder(GLUquadric * quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);`
`void` `gluDeleteQuadric(GLUquadric quad)` Interface to C language function: `void gluDeleteQuadric(GLUquadric * quad);`
`void` `gluDeleteTess(GLUtessellator tessellator)` gluDeleteTess destroys the indicated tessellation object (which was created with `gluNewTess`).
`void` `gluDisk(GLUquadric quad, double inner, double outer, int slices, int loops)` Interface to C language function: `void gluDisk(GLUquadric * quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);`
`void` `gluEndCurve(GLUnurbs r)` Ends a curve definition.
`void` `gluEndPolygon(GLUtessellator tessellator)` gluEndPolygon and `gluBeginPolygon` delimit the definition of a nonconvex polygon.
`void` `gluEndSurface(GLUnurbs r)` Ends a surface.
`String` `gluErrorString(int errorCode)`
`String` `gluGetString(int name)`
`void` `gluGetTessProperty(GLUtessellator tessellator, int which, double[] value, int value_offset)` gluGetTessProperty retrieves properties stored in a tessellation object.
`void` `gluLookAt(double eyeX, double eyeY, double eyeZ, double centerX, double centerY, double centerZ, double upX, double upY, double upZ)`
`GLUnurbs` `gluNewNurbsRenderer()` Creates a new GLUnurbs object.
`GLUquadric` `gluNewQuadric()` Interface to C language function: `GLUquadric * gluNewQuadric(void);`
`GLUtessellator` `gluNewTess()` gluNewTess creates and returns a new tessellation object.
`void` `gluNextContour(GLUtessellator tessellator, int type)` gluNextContour is used to describe polygons with multiple contours.
`void` `gluNurbsCurve(GLUnurbs r, int nknots, float[] knot, int stride, float[] ctlarray, int order, int type)` Make a NURBS curve.
`void` `gluNurbsProperty(GLUnurbs r, int property, float value)` Sets a property on a NURBS object.
`void` `gluNurbsSurface(GLUnurbs r, int sknot_count, float[] sknot, int tknot_count, float[] tknot, int s_stride, int t_stride, float[] ctlarray, int sorder, int torder, int type)` Makes a NURBS surface.
`void` `gluOrtho2D(double left, double right, double bottom, double top)`
`void` `gluPartialDisk(GLUquadric quad, double inner, double outer, int slices, int loops, double start, double sweep)` Interface to C language function: `void gluPartialDisk(GLUquadric * quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);`
`void` `gluPerspective(double fovy, double aspect, double zNear, double zFar)`
`void` `gluPickMatrix(double x, double y, double delX, double delY, int[] viewport, int viewport_offset)`
`void` `gluPickMatrix(double x, double y, double delX, double delY, IntBuffer viewport)`

`boolean`

`gluProject(double objX, double objY, double objZ, double[] model, int model_offset, double[] proj, int proj_offset, int[] view, int view_offset, double[] winPos, int winPos_offset)`
Interface to C language function:
`GLint gluProject(GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * winX, GLdouble * winY, GLdouble * winZ);`

`boolean` `gluProject(double objX, double objY, double objZ, DoubleBuffer model, DoubleBuffer proj, IntBuffer view, DoubleBuffer winPos)` Interface to C language function: `GLint gluProject(GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * winX, GLdouble * winY, GLdouble * winZ);`
`void` `gluQuadricDrawStyle(GLUquadric quad, int draw)` Interface to C language function: `void gluQuadricDrawStyle(GLUquadric * quad, GLenum draw);`
`void` `gluQuadricNormals(GLUquadric quad, int normal)` Interface to C language function: `void gluQuadricNormals(GLUquadric * quad, GLenum normal);`
`void` `gluQuadricOrientation(GLUquadric quad, int orientation)` Interface to C language function: `void gluQuadricOrientation(GLUquadric * quad, GLenum orientation);`
`void` `gluQuadricTexture(GLUquadric quad, boolean texture)` Interface to C language function: `void gluQuadricTexture(GLUquadric * quad, GLboolean texture);`
`int` `gluScaleImage(int format, int wIn, int hIn, int typeIn, Buffer dataIn, int wOut, int hOut, int typeOut, Buffer dataOut)` Interface to C language function: `GLint gluScaleImage(GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void * dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid * dataOut);`
`void` `gluSphere(GLUquadric quad, double radius, int slices, int stacks)` Interface to C language function: `void gluSphere(GLUquadric * quad, GLdouble radius, GLint slices, GLint stacks);`
`void` `gluTessBeginContour(GLUtessellator tessellator)` gluTessBeginContour and `gluTessEndContour` delimit the definition of a polygon contour.
`void` `gluTessBeginPolygon(GLUtessellator tessellator, Object data)` gluTessBeginPolygon and `gluTessEndPolygon` delimit the definition of a convex, concave or self-intersecting polygon.
`void` `gluTessCallback(GLUtessellator tessellator, int which, GLUtessellatorCallback aCallback)` gluTessCallback is used to indicate a callback to be used by a tessellation object.
`void` `gluTessEndContour(GLUtessellator tessellator)` gluTessEndContour and `gluTessBeginContour` delimit the definition of a polygon contour.
`void` `gluTessEndPolygon(GLUtessellator tessellator)` gluTessEndPolygon and `gluTessBeginPolygon` delimit the definition of a convex, concave or self-intersecting polygon.
`void` `gluTessNormal(GLUtessellator tessellator, double x, double y, double z)` gluTessNormal describes a normal for a polygon that the program is defining.
`void` `gluTessProperty(GLUtessellator tessellator, int which, double value)` gluTessProperty is used to control properites stored in a tessellation object.
`void` `gluTessVertex(GLUtessellator tessellator, double[] coords, int coords_offset, Object data)` gluTessVertex describes a vertex on a polygon that the program defines.

`boolean`

`gluUnProject(double winX, double winY, double winZ, double[] model, int model_offset, double[] proj, int proj_offset, int[] view, int view_offset, double[] objPos, int objPos_offset)`
Interface to C language function:
`GLint gluUnProject(GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * objX, GLdouble * objY, GLdouble * objZ);`

`boolean` `gluUnProject(double winX, double winY, double winZ, DoubleBuffer model, DoubleBuffer proj, IntBuffer view, DoubleBuffer objPos)` Interface to C language function: `GLint gluUnProject(GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * objX, GLdouble * objY, GLdouble * objZ);`

`boolean`

`gluUnProject4(double winX, double winY, double winZ, double clipW, double[] model, int model_offset, double[] proj, int proj_offset, int[] view, int view_offset, double nearVal, double farVal, double[] objPos, int objPos_offset)`
Interface to C language function:
`GLint gluUnProject4(GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble nearVal, GLdouble farVal, GLdouble * objX, GLdouble * objY, GLdouble * objZ, GLdouble * objW);`

`boolean`

`gluUnProject4(double winX, double winY, double winZ, double clipW, DoubleBuffer model, DoubleBuffer proj, IntBuffer view, double nearVal, double farVal, DoubleBuffer objPos)`
Interface to C language function:
`GLint gluUnProject4(GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble nearVal, GLdouble farVal, GLdouble * objX, GLdouble * objY, GLdouble * objZ, GLdouble * objW);`

`boolean` `isFunctionAvailable(String gluFunctionName)` Returns true if the specified GLU core- or extension-function can be successfully used through this GLU instance.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### GLU_FALSE

    public static final int GLU_FALSE

See Also:
  Constant Field Values

### GLU_TRUE

    public static final int GLU_TRUE

See Also:
  Constant Field Values

### GLU_VERSION

    public static final int GLU_VERSION

See Also:
  Constant Field Values

### GLU_EXTENSIONS

    public static final int GLU_EXTENSIONS

See Also:
  Constant Field Values

### versionString

    public static final String versionString

See Also:
  Constant Field Values

### extensionString

    public static final String extensionString

See Also:
  Constant Field Values

### GLU_INVALID_ENUM

    public static final int GLU_INVALID_ENUM

See Also:
  Constant Field Values

### GLU_INVALID_VALUE

    public static final int GLU_INVALID_VALUE

See Also:
  Constant Field Values

### GLU_OUT_OF_MEMORY

    public static final int GLU_OUT_OF_MEMORY

See Also:
  Constant Field Values

### GLU_INVALID_OPERATION

    public static final int GLU_INVALID_OPERATION

See Also:
  Constant Field Values

### GLU_ERROR

    public static final int GLU_ERROR

See Also:
  Constant Field Values

### GLU_POINT

    public static final int GLU_POINT

See Also:
  Constant Field Values

### GLU_LINE

    public static final int GLU_LINE

See Also:
  Constant Field Values

### GLU_FILL

    public static final int GLU_FILL

See Also:
  Constant Field Values

### GLU_SILHOUETTE

    public static final int GLU_SILHOUETTE

See Also:
  Constant Field Values

### GLU_SMOOTH

    public static final int GLU_SMOOTH

See Also:
  Constant Field Values

### GLU_FLAT

    public static final int GLU_FLAT

See Also:
  Constant Field Values

### GLU_NONE

    public static final int GLU_NONE

See Also:
  Constant Field Values

### GLU_OUTSIDE

    public static final int GLU_OUTSIDE

See Also:
  Constant Field Values

### GLU_INSIDE

    public static final int GLU_INSIDE

See Also:
  Constant Field Values

### GLU_TESS_BEGIN

    public static final int GLU_TESS_BEGIN

See Also:
  Constant Field Values

### GLU_BEGIN

    public static final int GLU_BEGIN

See Also:
  Constant Field Values

### GLU_TESS_VERTEX

    public static final int GLU_TESS_VERTEX

See Also:
  Constant Field Values

### GLU_VERTEX

    public static final int GLU_VERTEX

See Also:
  Constant Field Values

### GLU_TESS_END

    public static final int GLU_TESS_END

See Also:
  Constant Field Values

### GLU_END

    public static final int GLU_END

See Also:
  Constant Field Values

### GLU_TESS_ERROR

    public static final int GLU_TESS_ERROR

See Also:
  Constant Field Values

### GLU_TESS_EDGE_FLAG

    public static final int GLU_TESS_EDGE_FLAG

See Also:
  Constant Field Values

### GLU_EDGE_FLAG

    public static final int GLU_EDGE_FLAG

See Also:
  Constant Field Values

### GLU_TESS_COMBINE

    public static final int GLU_TESS_COMBINE

See Also:
  Constant Field Values

### GLU_TESS_BEGIN_DATA

    public static final int GLU_TESS_BEGIN_DATA

See Also:
  Constant Field Values

### GLU_TESS_VERTEX_DATA

    public static final int GLU_TESS_VERTEX_DATA

See Also:
  Constant Field Values

### GLU_TESS_END_DATA

    public static final int GLU_TESS_END_DATA

See Also:
  Constant Field Values

### GLU_TESS_ERROR_DATA

    public static final int GLU_TESS_ERROR_DATA

See Also:
  Constant Field Values

### GLU_TESS_EDGE_FLAG_DATA

    public static final int GLU_TESS_EDGE_FLAG_DATA

See Also:
  Constant Field Values

### GLU_TESS_COMBINE_DATA

    public static final int GLU_TESS_COMBINE_DATA

See Also:
  Constant Field Values

### GLU_CW

    public static final int GLU_CW

See Also:
  Constant Field Values

### GLU_CCW

    public static final int GLU_CCW

See Also:
  Constant Field Values

### GLU_INTERIOR

    public static final int GLU_INTERIOR

See Also:
  Constant Field Values

### GLU_EXTERIOR

    public static final int GLU_EXTERIOR

See Also:
  Constant Field Values

### GLU_UNKNOWN

    public static final int GLU_UNKNOWN

See Also:
  Constant Field Values

### GLU_TESS_WINDING_RULE

    public static final int GLU_TESS_WINDING_RULE

See Also:
  Constant Field Values

### GLU_TESS_BOUNDARY_ONLY

    public static final int GLU_TESS_BOUNDARY_ONLY

See Also:
  Constant Field Values

### GLU_TESS_TOLERANCE

    public static final int GLU_TESS_TOLERANCE

See Also:
  Constant Field Values

### GLU_TESS_ERROR1

    public static final int GLU_TESS_ERROR1

See Also:
  Constant Field Values

### GLU_TESS_ERROR2

    public static final int GLU_TESS_ERROR2

See Also:
  Constant Field Values

### GLU_TESS_ERROR3

    public static final int GLU_TESS_ERROR3

See Also:
  Constant Field Values

### GLU_TESS_ERROR4

    public static final int GLU_TESS_ERROR4

See Also:
  Constant Field Values

### GLU_TESS_ERROR5

    public static final int GLU_TESS_ERROR5

See Also:
  Constant Field Values

### GLU_TESS_ERROR6

    public static final int GLU_TESS_ERROR6

See Also:
  Constant Field Values

### GLU_TESS_ERROR7

    public static final int GLU_TESS_ERROR7

See Also:
  Constant Field Values

### GLU_TESS_ERROR8

    public static final int GLU_TESS_ERROR8

See Also:
  Constant Field Values

### GLU_TESS_MISSING_BEGIN_POLYGON

    public static final int GLU_TESS_MISSING_BEGIN_POLYGON

See Also:
  Constant Field Values

### GLU_TESS_MISSING_BEGIN_CONTOUR

    public static final int GLU_TESS_MISSING_BEGIN_CONTOUR

See Also:
  Constant Field Values

### GLU_TESS_MISSING_END_POLYGON

    public static final int GLU_TESS_MISSING_END_POLYGON

See Also:
  Constant Field Values

### GLU_TESS_MISSING_END_CONTOUR

    public static final int GLU_TESS_MISSING_END_CONTOUR

See Also:
  Constant Field Values

### GLU_TESS_COORD_TOO_LARGE

    public static final int GLU_TESS_COORD_TOO_LARGE

See Also:
  Constant Field Values

### GLU_TESS_NEED_COMBINE_CALLBACK

    public static final int GLU_TESS_NEED_COMBINE_CALLBACK

See Also:
  Constant Field Values

### GLU_TESS_WINDING_ODD

    public static final int GLU_TESS_WINDING_ODD

See Also:
  Constant Field Values

### GLU_TESS_WINDING_NONZERO

    public static final int GLU_TESS_WINDING_NONZERO

See Also:
  Constant Field Values

### GLU_TESS_WINDING_POSITIVE

    public static final int GLU_TESS_WINDING_POSITIVE

See Also:
  Constant Field Values

### GLU_TESS_WINDING_NEGATIVE

    public static final int GLU_TESS_WINDING_NEGATIVE

See Also:
  Constant Field Values

### GLU_TESS_WINDING_ABS_GEQ_TWO

    public static final int GLU_TESS_WINDING_ABS_GEQ_TWO

See Also:
  Constant Field Values

### GLU_TESS_MAX_COORD

    public static final double GLU_TESS_MAX_COORD

See Also:
  Constant Field Values

Constructor Detail

### GLU

    public GLU()

  Instantiates a new OpenGL Utility Library object. A GLU object may be instantiated at any point in the application and is not inherently tied to any particular OpenGL context; however, the GLU object may only be used when an OpenGL context is current on the current thread. Attempts to call most of the methods in the GLU library when no OpenGL context is current will cause an exception to be thrown.

  The returned GLU object is not guaranteed to be thread-safe and should only be used from one thread at a time. Multiple GLU objects may be instantiated to be used from different threads simultaneously.

Method Detail

### getCurrentGL

    public static GL getCurrentGL()
                           throws GLException

  Returns the GL object associated with the OpenGL context current on the current thread. Throws GLException if no OpenGL context is current.

  Throws:
    `GLException`

### gluErrorString

    public String gluErrorString(int errorCode)

### gluCheckExtension

    public boolean gluCheckExtension(String extName,
                                     String extString)

### gluGetString

    public String gluGetString(int name)

### isFunctionAvailable

    public boolean isFunctionAvailable(String gluFunctionName)

  Returns true if the specified GLU core- or extension-function can be successfully used through this GLU instance. By "successfully" we mean that the function is both callable on the machine running the program and available on the current display.

  A GLU function is callable if it is a GLU core- or extension-function that is supported by the underlying GLU implementation. The function is available if the OpenGL implementation on the display meets the requirements of the GLU function being called (because GLU functions utilize OpenGL functions).

  Whether or not a GLU function is callable is determined as follows:

  - If the function is a GLU core function (i.e., not an extension), `gluGetString(GLU_VERSION)` is used to determine the version number of the underlying GLU implementation on the host. then the function name is cross-referenced with that specification to see if it is part of that version's specification.
  - If the function is a GLU extension, the function name is cross-referenced with the list returned by `gluGetString(GLU_EXTENSIONS)` to see if the function is one of the extensions that is supported by the underlying GLU implementation.
  Whether or not a GLU function is available is determined as follows:
  - If the function is a GLU core function then the function is first cross-referenced with the GLU specifications to find the minimum GLU version required to call that GLU function. Then the following table is consulted to determine the minimum GL version required for that version of GLU:
    - GLU 1.0 requires OpenGL 1.0
    - GLU 1.1 requires OpenGL 1.0
    - GLU 1.2 requires OpenGL 1.1
    - GLU 1.3 requires OpenGL 1.2
    Finally, `glGetString(GL_VERSION)` is used to determine the highest OpenGL version that both host and display support, and from that it is possible to determine if the GL facilities required by the GLU function are available on the display.
  - If the function is a GLU extension, the function name is cross-referenced with the list returned by `gluGetString(GLU_EXTENSIONS)` to see if the function is one of the extensions that is supported by the underlying GLU implementation.
  NOTE:The availability of a function may change at runtime in response to changes in the display environment. For example, when a window is dragged from one display to another on a multi-display system, or when the properties of the display device are modified (e.g., changing the color depth of the display). Any application that is concerned with handling these situations correctly should confirm availability after a display change before calling a questionable OpenGL function. To detect a change in the display device, please see `GLEventListener.displayChanged(GLAutoDrawable,boolean,boolean)`.

  Parameters:
    `gluFunctionName` - the name of the OpenGL function (e.g., use "gluNurbsCallbackDataEXT" to check if the `gluNurbsCallbackDataEXT(GLUnurbs, GLvoid)` extension is available).

### gluNewTess

    public GLUtessellator gluNewTess()

  gluNewTess creates and returns a new tessellation object. This object must be referred to when calling tesselation methods. A return value of null means that there was not enough memeory to allocate the object.

  Returns:
    A new tessellation object.
  See Also:
    `gluTessBeginPolygon`, `gluDeleteTess`, `gluTessCallback`

### gluDeleteTess

    public void gluDeleteTess(GLUtessellator tessellator)

  gluDeleteTess destroys the indicated tessellation object (which was created with `gluNewTess`).

  Parameters:
    `tessellator` - Specifies the tessellation object to destroy.
  See Also:
    `gluBeginPolygon`, `gluNewTess`, `gluTessCallback`

### gluTessProperty

    public void gluTessProperty(GLUtessellator tessellator,
                                int which,
                                double value)

  gluTessProperty is used to control properites stored in a tessellation object. These properties affect the way that the polygons are interpreted and rendered. The legal value for which are as follows:

  GLU_TESS_WINDING_RULE

  Determines which parts of the polygon are on the "interior". value may be set to one of
  GLU_TESS_WINDING_ODD,
  GLU_TESS_WINDING_NONZERO,
  GLU_TESS_WINDING_POSITIVE, or
  GLU_TESS_WINDING_NEGATIVE, or
  GLU_TESS_WINDING_ABS_GEQ_TWO.

  To understand how the winding rule works, consider that the input contours partition the plane into regions. The winding rule determines which of these regions are inside the polygon.

  For a single contour C, the winding number of a point x is simply the signed number of revolutions we make around x as we travel once around C (where CCW is positive). When there are several contours, the individual winding numbers are summed. This procedure associates a signed integer value with each point x in the plane. Note that the winding number is the same for all points in a single region.

  The winding rule classifies a region as "inside" if its winding number belongs to the chosen category (odd, nonzero, positive, negative, or absolute value of at least two). The previous GLU tessellator (prior to GLU 1.2) used the "odd" rule. The "nonzero" rule is another common way to define the interior. The other three rules are useful for polygon CSG operations.

  GLU_TESS_BOUNDARY_ONLY
  Is a boolean value ("value" should be set to GL_TRUE or GL_FALSE). When set to GL_TRUE, a set of closed contours separating the polygon interior and exterior are returned instead of a tessellation. Exterior contours are oriented CCW with respect to the normal; interior contours are oriented CW. The GLU_TESS_BEGIN and GLU_TESS_BEGIN_DATA callbacks use the type GL_LINE_LOOP for each contour.
  GLU_TESS_TOLERANCE
  Specifies a tolerance for merging features to reduce the size of the output. For example, two vertices that are very close to each other might be replaced by a single vertex. The tolerance is multiplied by the largest coordinate magnitude of any input vertex; this specifies the maximum distance that any feature can move as the result of a single merge operation. If a single feature takes part in several merge operations, the toal distance moved could be larger.

  Feature merging is completely optional; the tolerance is only a hint. The implementation is free to merge in some cases and not in others, or to never merge features at all. The initial tolerance is 0.

  The current implementation merges vertices only if they are exactly coincident, regardless of the current tolerance. A vertex is spliced into an edge only if the implementation is unable to distinguish which side of the edge the vertex lies on. Two edges are merged only when both endpoints are identical.

  Parameters:
    `tessellator` - Specifies the tessellation object created with `gluNewTess`
    `which` - Specifies the property to be set. Valid values are GLU_TESS_WINDING_RULE, GLU_TESS_BOUNDARDY_ONLY, GLU_TESS_TOLERANCE.
    `value` - Specifices the value of the indicated property.
  See Also:
    `gluGetTessProperty`, `gluNewTess`

### gluGetTessProperty

    public void gluGetTessProperty(GLUtessellator tessellator,
                                   int which,
                                   double[] value,
                                   int value_offset)

  gluGetTessProperty retrieves properties stored in a tessellation object. These properties affect the way that tessellation objects are interpreted and rendered. See the `gluTessProperty` reference page for information about the properties and what they do.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
    `which` - Specifies the property whose value is to be fetched. Valid values are GLU_TESS_WINDING_RULE, GLU_TESS_BOUNDARY_ONLY, and GLU_TESS_TOLERANCES.
    `value` - Specifices an array into which the value of the named property is written.
  See Also:
    `gluNewTess`, `gluTessProperty`

### gluTessNormal

    public void gluTessNormal(GLUtessellator tessellator,
                              double x,
                              double y,
                              double z)

  gluTessNormal describes a normal for a polygon that the program is defining. All input data will be projected onto a plane perpendicular to the one of the three coordinate axes before tessellation and all output triangles will be oriented CCW with repsect to the normal (CW orientation can be obtained by reversing the sign of the supplied normal). For example, if you know that all polygons lie in the x-y plane, call gluTessNormal(tess, 0.0, 0.0, 0.0) before rendering any polygons.

  If the supplied normal is (0.0, 0.0, 0.0)(the initial value), the normal is determined as follows. The direction of the normal, up to its sign, is found by fitting a plane to the vertices, without regard to how the vertices are connected. It is expected that the input data lies approximately in the plane; otherwise, projection perpendicular to one of the three coordinate axes may substantially change the geometry. The sign of the normal is chosen so that the sum of the signed areas of all input contours is nonnegative (where a CCW contour has positive area).

  The supplied normal persists until it is changed by another call to gluTessNormal.

  Parameters:
    `tessellator` - Specifies the tessellation object (created by `gluNewTess`).
    `x` - Specifies the first component of the normal.
    `y` - Specifies the second component of the normal.
    `z` - Specifies the third component of the normal.
  See Also:
    `gluTessBeginPolygon`, `gluTessEndPolygon`

### gluTessCallback

    public void gluTessCallback(GLUtessellator tessellator,
                                int which,
                                GLUtessellatorCallback aCallback)

  gluTessCallback is used to indicate a callback to be used by a tessellation object. If the specified callback is already defined, then it is replaced. If aCallback is null, then the existing callback becomes undefined.

  These callbacks are used by the tessellation object to describe how a polygon specified by the user is broken into triangles. Note that there are two versions of each callback: one with user-specified polygon data and one without. If both versions of a particular callback are specified, then the callback with user-specified polygon data will be used. Note that the polygonData parameter used by some of the methods is a copy of the reference that was specified when `gluTessBeginPolygon` was called. The legal callbacks are as follows:

  GLU_TESS_BEGIN

  The begin callback is invoked like `glBegin` to indicate the start of a (triangle) primitive. The method takes a single argument of type int. If the GLU_TESS_BOUNDARY_ONLY property is set to GL_FALSE, then the argument is set to either GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP, or GL_TRIANGLES. If the GLU_TESS_BOUNDARY_ONLY property is set to GL_TRUE, then the argument will be set to GL_LINE_LOOP. The method prototype for this callback is:

               void begin(int type);

  GLU_TESS_BEGIN_DATA

  The same as the GLU_TESS_BEGIN callback except that it takes an additional reference argument. This reference is identical to the opaque reference provided when `gluTessBeginPolygon` was called. The method prototype for this callback is:

               void beginData(int type, Object polygonData);

  GLU_TESS_EDGE_FLAG
  The edge flag callback is similar to `glEdgeFlag`. The method takes a single boolean boundaryEdge that indicates which edges lie on the polygon boundary. If the boundaryEdge is GL_TRUE, then each vertex that follows begins an edge that lies on the polygon boundary, that is, an edge that separates an interior region from an exterior one. If the boundaryEdge is GL_FALSE, then each vertex that follows begins an edge that lies in the polygon interior. The edge flag callback (if defined) is invoked before the first vertex callback.

  Since triangle fans and triangle strips do not support edge flags, the begin callback is not called with GL_TRIANGLE_FAN or GL_TRIANGLE_STRIP if a non-null edge flag callback is provided. (If the callback is initialized to null, there is no impact on performance). Instead, the fans and strips are converted to independent triangles. The method prototype for this callback is:

               void edgeFlag(boolean boundaryEdge);

  GLU_TESS_EDGE_FLAG_DATA
  The same as the GLU_TESS_EDGE_FLAG callback except that it takes an additional reference argument. This reference is identical to the opaque reference provided when `gluTessBeginPolygon` was called. The method prototype for this callback is:

               void edgeFlagData(boolean boundaryEdge, Object polygonData);

  GLU_TESS_VERTEX
  The vertex callback is invoked between the begin and end callbacks. It is similar to `glVertex3f`, and it defines the vertices of the triangles created by the tessellation process. The method takes a reference as its only argument. This reference is identical to the opaque reference provided by the user when the vertex was described (see `gluTessVertex`). The method prototype for this callback is:

               void vertex(Object vertexData);

  GLU_TESS_VERTEX_DATA
  The same as the GLU_TESS_VERTEX callback except that it takes an additional reference argument. This reference is identical to the opaque reference provided when `gluTessBeginPolygon` was called. The method prototype for this callback is:

               void vertexData(Object vertexData, Object polygonData);

  GLU_TESS_END
  The end callback serves the same purpose as `glEnd`. It indicates the end of a primitive and it takes no arguments. The method prototype for this callback is:

               void end();

  GLU_TESS_END_DATA
  The same as the GLU_TESS_END callback except that it takes an additional reference argument. This reference is identical to the opaque reference provided when `gluTessBeginPolygon` was called. The method prototype for this callback is:

               void endData(Object polygonData);

  GLU_TESS_COMBINE
  The combine callback is called to create a new vertex when the tessellation detects an intersection, or wishes to merge features. The method takes four arguments: an array of three elements each of type double, an array of four references, an array of four elements each of type float, and a reference to a reference. The prototype is:

               void combine(double[] coords, Object[] data,
                            float[] weight, Object[] outData);

  The vertex is defined as a linear combination of up to four existing vertices, stored in data. The coefficients of the linear combination are given by weight; these weights always add up to 1. All vertex pointers are valid even when some of the weights are 0. coords gives the location of the new vertex.

  The user must allocate another vertex, interpolate parameters using data and weight, and return the new vertex pointer in outData. This handle is supplied during rendering callbacks. The user is responsible for freeing the memory some time after `gluTessEndPolygon` is called.

  For example, if the polygon lies in an arbitrary plane in 3-space, and a color is associated with each vertex, the GLU_TESS_COMBINE callback might look like this:

               void myCombine(double[] coords, Object[] data,
                              float[] weight, Object[] outData)
               {
                  MyVertex newVertex = new MyVertex();

                  newVertex.x = coords[0];
                  newVertex.y = coords[1];
                  newVertex.z = coords[2];
                  newVertex.r = weight[0]*data[0].r +
                                weight[1]*data[1].r +
                                weight[2]*data[2].r +
                                weight[3]*data[3].r;
                  newVertex.g = weight[0]*data[0].g +
                                weight[1]*data[1].g +
                                weight[2]*data[2].g +
                                weight[3]*data[3].g;
                  newVertex.b = weight[0]*data[0].b +
                                weight[1]*data[1].b +
                                weight[2]*data[2].b +
                                weight[3]*data[3].b;
                  newVertex.a = weight[0]*data[0].a +
                                weight[1]*data[1].a +
                                weight[2]*data[2].a +
                                weight[3]*data[3].a;
                  outData = newVertex;
               }

  If the tessellation detects an intersection, then the GLU_TESS_COMBINE or GLU_TESS_COMBINE_DATA callback (see below) must be defined, and it must write a non-null reference into outData. Otherwise the GLU_TESS_NEED_COMBINE_CALLBACK error occurs, and no output is generated.
  GLU_TESS_COMBINE_DATA
  The same as the GLU_TESS_COMBINE callback except that it takes an additional reference argument. This reference is identical to the opaque reference provided when `gluTessBeginPolygon` was called. The method prototype for this callback is:

               void combineData(double[] coords, Object[] data,
                                    float[] weight, Object[] outData,
                                    Object polygonData);

  GLU_TESS_ERROR
  The error callback is called when an error is encountered. The one argument is of type int; it indicates the specific error that occurred and will be set to one of GLU_TESS_MISSING_BEGIN_POLYGON, GLU_TESS_MISSING_END_POLYGON, GLU_TESS_MISSING_BEGIN_CONTOUR, GLU_TESS_MISSING_END_CONTOUR, GLU_TESS_COORD_TOO_LARGE, GLU_TESS_NEED_COMBINE_CALLBACK or GLU_OUT_OF_MEMORY. Character strings describing these errors can be retrieved with the `gluErrorString` call. The method prototype for this callback is:

               void error(int errnum);

  The GLU library will recover from the first four errors by inserting the missing call(s). GLU_TESS_COORD_TOO_LARGE indicates that some vertex coordinate exceeded the predefined constant GLU_TESS_MAX_COORD in absolute value, and that the value has been clamped. (Coordinate values must be small enough so that two can be multiplied together without overflow.) GLU_TESS_NEED_COMBINE_CALLBACK indicates that the tessellation detected an intersection between two edges in the input data, and the GLU_TESS_COMBINE or GLU_TESS_COMBINE_DATA callback was not provided. No output is generated. GLU_OUT_OF_MEMORY indicates that there is not enough memory so no output is generated.
  GLU_TESS_ERROR_DATA
  The same as the GLU_TESS_ERROR callback except that it takes an additional reference argument. This reference is identical to the opaque reference provided when `gluTessBeginPolygon` was called. The method prototype for this callback is:

               void errorData(int errnum, Object polygonData);

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
    `which` - Specifies the callback being defined. The following values are valid: GLU_TESS_BEGIN, GLU_TESS_BEGIN_DATA, GLU_TESS_EDGE_FLAG, GLU_TESS_EDGE_FLAG_DATA, GLU_TESS_VERTEX, GLU_TESS_VERTEX_DATA, GLU_TESS_END, GLU_TESS_END_DATA, GLU_TESS_COMBINE, GLU_TESS_COMBINE_DATA, GLU_TESS_ERROR, and GLU_TESS_ERROR_DATA.
    `aCallback` - Specifies the callback object to be called.
  See Also:
    `glBegin`, `glEdgeFlag`, `glVertex3f`, `gluNewTess`, `gluErrorString`, `gluTessVertex`, `gluTessBeginPolygon`, `gluTessBeginContour`, `gluTessProperty`, `gluTessNormal`

### gluTessVertex

    public void gluTessVertex(GLUtessellator tessellator,
                              double[] coords,
                              int coords_offset,
                              Object data)

  gluTessVertex describes a vertex on a polygon that the program defines. Successive gluTessVertex calls describe a closed contour. For example, to describe a quadrilateral gluTessVertex should be called four times. gluTessVertex can only be called between `gluTessBeginContour` and `gluTessEndContour`.

  data normally references to a structure containing the vertex location, as well as other per-vertex attributes such as color and normal. This reference is passed back to the user through the GLU_TESS_VERTEX or GLU_TESS_VERTEX_DATA callback after tessellation (see the `gluTessCallback` reference page).

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
    `coords` - Specifies the coordinates of the vertex.
    `data` - Specifies an opaque reference passed back to the program with the vertex callback (as specified by `gluTessCallback`).
  See Also:
    `gluTessBeginPolygon`, `gluNewTess`, `gluTessBeginContour`, `gluTessCallback`, `gluTessProperty`, `gluTessNormal`, `gluTessEndPolygon`

### gluTessBeginPolygon

    public void gluTessBeginPolygon(GLUtessellator tessellator,
                                    Object data)

  gluTessBeginPolygon and `gluTessEndPolygon` delimit the definition of a convex, concave or self-intersecting polygon. Within each gluTessBeginPolygon/ `gluTessEndPolygon` pair, there must be one or more calls to `gluTessBeginContour`/ `gluTessEndContour`. Within each contour, there are zero or more calls to `gluTessVertex`. The vertices specify a closed contour (the last vertex of each contour is automatically linked to the first). See the `gluTessVertex`, `gluTessBeginContour`, and `gluTessEndContour` reference pages for more details.

  data is a reference to a user-defined data structure. If the appropriate callback(s) are specified (see `gluTessCallback`), then this reference is returned to the callback method(s). Thus, it is a convenient way to store per-polygon information.

  Once `gluTessEndPolygon` is called, the polygon is tessellated, and the resulting triangles are described through callbacks. See `gluTessCallback` for descriptions of the callback methods.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
    `data` - Specifies a reference to user polygon data.
  See Also:
    `gluNewTess`, `gluTessBeginContour`, `gluTessVertex`, `gluTessCallback`, `gluTessProperty`, `gluTessNormal`, `gluTessEndPolygon`

### gluTessBeginContour

    public void gluTessBeginContour(GLUtessellator tessellator)

  gluTessBeginContour and `gluTessEndContour` delimit the definition of a polygon contour. Within each gluTessBeginContour/ `gluTessEndContour` pair, there can be zero or more calls to `gluTessVertex`. The vertices specify a closed contour (the last vertex of each contour is automatically linked to the first). See the `gluTessVertex` reference page for more details. gluTessBeginContour can only be called between `gluTessBeginPolygon` and `gluTessEndPolygon`.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
  See Also:
    `gluNewTess`, `gluTessBeginPolygon`, `gluTessVertex`, `gluTessCallback`, `gluTessProperty`, `gluTessNormal`, `gluTessEndPolygon`

### gluTessEndContour

    public void gluTessEndContour(GLUtessellator tessellator)

  gluTessEndContour and `gluTessBeginContour` delimit the definition of a polygon contour. Within each `gluTessBeginContour`/ gluTessEndContour pair, there can be zero or more calls to `gluTessVertex`. The vertices specify a closed contour (the last vertex of each contour is automatically linked to the first). See the `gluTessVertex` reference page for more details. `gluTessBeginContour` can only be called between `gluTessBeginPolygon` and `gluTessEndPolygon`.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
  See Also:
    `gluNewTess`, `gluTessBeginPolygon`, `gluTessVertex`, `gluTessCallback`, `gluTessProperty`, `gluTessNormal`, `gluTessEndPolygon`

### gluTessEndPolygon

    public void gluTessEndPolygon(GLUtessellator tessellator)

  gluTessEndPolygon and `gluTessBeginPolygon` delimit the definition of a convex, concave or self-intersecting polygon. Within each `gluTessBeginPolygon`/gluTessEndPolygon pair, there must be one or more calls to `gluTessBeginContour`/`gluTessEndContour`. Within each contour, there are zero or more calls to `gluTessVertex`. The vertices specify a closed contour (the last vertex of each contour is automatically linked to the first). See the `gluTessVertex`, `gluTessBeginContour` and `gluTessEndContour` reference pages for more details.

  Once gluTessEndPolygon is called, the polygon is tessellated, and the resulting triangles are described through callbacks. See `gluTessCallback` for descriptions of the callback functions.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
  See Also:
    `gluNewTess`, `gluTessBeginContour`, `gluTessVertex`, `gluTessCallback`, `gluTessProperty`, `gluTessNormal`, `gluTessBeginPolygon`

### gluBeginPolygon

    public void gluBeginPolygon(GLUtessellator tessellator)

  gluBeginPolygon and `gluEndPolygon` delimit the definition of a nonconvex polygon. To define such a polygon, first call gluBeginPolygon. Then define the contours of the polygon by calling `gluTessVertex` for each vertex and `gluNextContour` to start each new contour. Finally, call `gluEndPolygon` to signal the end of the definition. See the `gluTessVertex` and `gluNextContour` reference pages for more details.

  Once `gluEndPolygon` is called, the polygon is tessellated, and the resulting triangles are described through callbacks. See `gluTessCallback` for descriptions of the callback methods.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
  See Also:
    `gluNewTess`, `gluNextContour`, `gluTessCallback`, `gluTessVertex`, `gluTessBeginPolygon`, `gluTessBeginContour`

### gluNextContour

    public void gluNextContour(GLUtessellator tessellator,
                               int type)

  gluNextContour is used to describe polygons with multiple contours. After you describe the first contour through a series of `gluTessVertex` calls, a gluNextContour call indicates that the previous contour is complete and that the next contour is about to begin. Perform another series of `gluTessVertex` calls to describe the new contour. Repeat this process until all contours have been described.

  The type parameter defines what type of contour follows. The following values are valid.

  GLU_EXTERIOR

  An exterior contour defines an exterior boundary of the polygon.
  GLU_INTERIOR
  An interior contour defines an interior boundary of the polygon (such as a hole).
  GLU_UNKNOWN
  An unknown contour is analyzed by the library to determine whether it is interior or exterior.
  GLU_CCW, GLU_CW
  The first GLU_CCW or GLU_CW contour defined is considered to be exterior. All other contours are considered to be exterior if they are oriented in the same direction (clockwise or counterclockwise) as the first contour, and interior if they are not. If one contour is of type GLU_CCW or GLU_CW, then all contours must be of the same type (if they are not, then all GLU_CCW and GLU_CW contours will be changed to GLU_UNKNOWN). Note that there is no real difference between the GLU_CCW and GLU_CW contour types.

  To define the type of the first contour, you can call gluNextContour before describing the first contour. If you do not call gluNextContour before the first contour, the first contour is marked GLU_EXTERIOR.

  Note: The gluNextContour function is obsolete and is provided for backward compatibility only. The gluNextContour function is mapped to `gluTessEndContour` followed by `gluTessBeginContour`.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
    `type` - The type of the contour being defined.
  See Also:
    `gluNewTess`, `gluTessBeginContour`, `gluTessBeginPolygon`, `gluTessCallback`, `gluTessEndContour`, `gluTessVertex`

### gluEndPolygon

    public void gluEndPolygon(GLUtessellator tessellator)

  gluEndPolygon and `gluBeginPolygon` delimit the definition of a nonconvex polygon. To define such a polygon, first call `gluBeginPolygon`. Then define the contours of the polygon by calling `gluTessVertex` for each vertex and `gluNextContour` to start each new contour. Finally, call gluEndPolygon to signal the end of the definition. See the `gluTessVertex` and `gluNextContour` reference pages for more details.

  Once gluEndPolygon is called, the polygon is tessellated, and the resulting triangles are described through callbacks. See `gluTessCallback` for descriptions of the callback methods.

  Parameters:
    `tessellator` - Specifies the tessellation object (created with `gluNewTess`).
  See Also:
    `gluNewTess`, `gluNextContour`, `gluTessCallback`, `gluTessVertex`, `gluTessBeginPolygon`, `gluTessBeginContour`

### gluCylinder

    public void gluCylinder(GLUquadric quad,
                            double base,
                            double top,
                            double height,
                            int slices,
                            int stacks)

  Interface to C language function:
  `void gluCylinder(GLUquadric * quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);`

### gluDeleteQuadric

    public void gluDeleteQuadric(GLUquadric quad)

  Interface to C language function:
  `void gluDeleteQuadric(GLUquadric * quad);`

### gluDisk

    public void gluDisk(GLUquadric quad,
                        double inner,
                        double outer,
                        int slices,
                        int loops)

  Interface to C language function:
  `void gluDisk(GLUquadric * quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);`

### gluNewQuadric

    public GLUquadric gluNewQuadric()

  Interface to C language function:
  `GLUquadric * gluNewQuadric(void);`

### gluPartialDisk

    public void gluPartialDisk(GLUquadric quad,
                               double inner,
                               double outer,
                               int slices,
                               int loops,
                               double start,
                               double sweep)

  Interface to C language function:
  `void gluPartialDisk(GLUquadric * quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);`

### gluQuadricDrawStyle

    public void gluQuadricDrawStyle(GLUquadric quad,
                                    int draw)

  Interface to C language function:
  `void gluQuadricDrawStyle(GLUquadric * quad, GLenum draw);`

### gluQuadricNormals

    public void gluQuadricNormals(GLUquadric quad,
                                  int normal)

  Interface to C language function:
  `void gluQuadricNormals(GLUquadric * quad, GLenum normal);`

### gluQuadricOrientation

    public void gluQuadricOrientation(GLUquadric quad,
                                      int orientation)

  Interface to C language function:
  `void gluQuadricOrientation(GLUquadric * quad, GLenum orientation);`

### gluQuadricTexture

    public void gluQuadricTexture(GLUquadric quad,
                                  boolean texture)

  Interface to C language function:
  `void gluQuadricTexture(GLUquadric * quad, GLboolean texture);`

### gluSphere

    public void gluSphere(GLUquadric quad,
                          double radius,
                          int slices,
                          int stacks)

  Interface to C language function:
  `void gluSphere(GLUquadric * quad, GLdouble radius, GLint slices, GLint stacks);`

### gluOrtho2D

    public void gluOrtho2D(double left,
                           double right,
                           double bottom,
                           double top)

### gluPerspective

    public void gluPerspective(double fovy,
                               double aspect,
                               double zNear,
                               double zFar)

### gluLookAt

    public void gluLookAt(double eyeX,
                          double eyeY,
                          double eyeZ,
                          double centerX,
                          double centerY,
                          double centerZ,
                          double upX,
                          double upY,
                          double upZ)

### gluProject

    public boolean gluProject(double objX,
                              double objY,
                              double objZ,
                              double[] model,
                              int model_offset,
                              double[] proj,
                              int proj_offset,
                              int[] view,
                              int view_offset,
                              double[] winPos,
                              int winPos_offset)

  Interface to C language function:
  `GLint gluProject(GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * winX, GLdouble * winY, GLdouble * winZ);`

  Accepts the outgoing window coordinates as a single array.

### gluProject

    public boolean gluProject(double objX,
                              double objY,
                              double objZ,
                              DoubleBuffer model,
                              DoubleBuffer proj,
                              IntBuffer view,
                              DoubleBuffer winPos)

  Interface to C language function:
  `GLint gluProject(GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * winX, GLdouble * winY, GLdouble * winZ);`

  Accepts the outgoing window coordinates as a single buffer.

### gluUnProject

    public boolean gluUnProject(double winX,
                                double winY,
                                double winZ,
                                double[] model,
                                int model_offset,
                                double[] proj,
                                int proj_offset,
                                int[] view,
                                int view_offset,
                                double[] objPos,
                                int objPos_offset)

  Interface to C language function:
  `GLint gluUnProject(GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * objX, GLdouble * objY, GLdouble * objZ);`

  Accepts the outgoing object coordinates (a 3-vector) as a single array.

### gluUnProject

    public boolean gluUnProject(double winX,
                                double winY,
                                double winZ,
                                DoubleBuffer model,
                                DoubleBuffer proj,
                                IntBuffer view,
                                DoubleBuffer objPos)

  Interface to C language function:
  `GLint gluUnProject(GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble * objX, GLdouble * objY, GLdouble * objZ);`

  Accepts the outgoing object coordinates (a 3-vector) as a single buffer.

### gluUnProject4

    public boolean gluUnProject4(double winX,
                                 double winY,
                                 double winZ,
                                 double clipW,
                                 double[] model,
                                 int model_offset,
                                 double[] proj,
                                 int proj_offset,
                                 int[] view,
                                 int view_offset,
                                 double nearVal,
                                 double farVal,
                                 double[] objPos,
                                 int objPos_offset)

  Interface to C language function:
  `GLint gluUnProject4(GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble nearVal, GLdouble farVal, GLdouble * objX, GLdouble * objY, GLdouble * objZ, GLdouble * objW);`

  Accepts the outgoing object coordinates (a 4-vector) as a single array.

### gluUnProject4

    public boolean gluUnProject4(double winX,
                                 double winY,
                                 double winZ,
                                 double clipW,
                                 DoubleBuffer model,
                                 DoubleBuffer proj,
                                 IntBuffer view,
                                 double nearVal,
                                 double farVal,
                                 DoubleBuffer objPos)

  Interface to C language function:
  `GLint gluUnProject4(GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble * model, const GLdouble * proj, const GLint * view, GLdouble nearVal, GLdouble farVal, GLdouble * objX, GLdouble * objY, GLdouble * objZ, GLdouble * objW);`

  Accepts the outgoing object coordinates (a 4-vector) as a single buffer.

### gluPickMatrix

    public void gluPickMatrix(double x,
                              double y,
                              double delX,
                              double delY,
                              int[] viewport,
                              int viewport_offset)

### gluPickMatrix

    public void gluPickMatrix(double x,
                              double y,
                              double delX,
                              double delY,
                              IntBuffer viewport)

### gluBuild1DMipmapLevels

    public int gluBuild1DMipmapLevels(int target,
                                      int internalFormat,
                                      int width,
                                      int format,
                                      int type,
                                      int level,
                                      int base,
                                      int max,
                                      Buffer data)

  Interface to C language function:
  `GLint gluBuild1DMipmapLevels(GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void * data);`

### gluBuild1DMipmaps

    public int gluBuild1DMipmaps(int target,
                                 int internalFormat,
                                 int width,
                                 int format,
                                 int type,
                                 Buffer data)

  Interface to C language function:
  `GLint gluBuild1DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void * data);`

### gluBuild2DMipmapLevels

    public int gluBuild2DMipmapLevels(int target,
                                      int internalFormat,
                                      int width,
                                      int height,
                                      int format,
                                      int type,
                                      int level,
                                      int base,
                                      int max,
                                      Buffer data)

  Interface to C language function:
  `GLint gluBuild2DMipmapLevels(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void * data);`

### gluBuild2DMipmaps

    public int gluBuild2DMipmaps(int target,
                                 int internalFormat,
                                 int width,
                                 int height,
                                 int format,
                                 int type,
                                 Buffer data)

  Interface to C language function:
  `GLint gluBuild2DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void * data);`

### gluBuild3DMipmapLevels

    public int gluBuild3DMipmapLevels(int target,
                                      int internalFormat,
                                      int width,
                                      int height,
                                      int depth,
                                      int format,
                                      int type,
                                      int level,
                                      int base,
                                      int max,
                                      Buffer data)

  Interface to C language function:
  `GLint gluBuild3DMipmapLevels(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void * data);`

### gluBuild3DMipmaps

    public int gluBuild3DMipmaps(int target,
                                 int internalFormat,
                                 int width,
                                 int height,
                                 int depth,
                                 int format,
                                 int type,
                                 Buffer data)

  Interface to C language function:
  `GLint gluBuild3DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void * data);`

### gluScaleImage

    public int gluScaleImage(int format,
                             int wIn,
                             int hIn,
                             int typeIn,
                             Buffer dataIn,
                             int wOut,
                             int hOut,
                             int typeOut,
                             Buffer dataOut)

  Interface to C language function:
  `GLint gluScaleImage(GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void * dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid * dataOut);`

### gluNurbsProperty

    public void gluNurbsProperty(GLUnurbs r,
                                 int property,
                                 float value)

  Sets a property on a NURBS object. (NOTE: this function is not currently implemented.)

  Parameters:
    `r` - GLUnurbs object holding NURBS to which a property should be set
    `property` - property id
    `value` - property value

### gluNewNurbsRenderer

    public GLUnurbs gluNewNurbsRenderer()

  Creates a new GLUnurbs object.

  Returns:
    GLUnurbs object

### gluBeginCurve

    public void gluBeginCurve(GLUnurbs r)

  Begins a curve definition.

  Parameters:
    `r` - GLUnurbs object to specify curve to

### gluBeginSurface

    public void gluBeginSurface(GLUnurbs r)

  Begins a surface definition.

  Parameters:
    `r` - GLUnurbs object to specify surface to

### gluEndSurface

    public void gluEndSurface(GLUnurbs r)

  Ends a surface.

  Parameters:
    `r` - GLUnurbs object holding surface

### gluNurbsSurface

    public void gluNurbsSurface(GLUnurbs r,
                                int sknot_count,
                                float[] sknot,
                                int tknot_count,
                                float[] tknot,
                                int s_stride,
                                int t_stride,
                                float[] ctlarray,
                                int sorder,
                                int torder,
                                int type)

  Makes a NURBS surface.

  Parameters:
    `r` - GLUnurbs object holding the surface
    `sknot_count` - number of knots in s direction
    `sknot` - knots in s direction
    `tknot_count` - number of knots in t direction
    `tknot` - knots in t direction
    `s_stride` - number of control points coordinates in s direction
    `t_stride` - number of control points coordinates in t direction
    `ctlarray` - control points
    `sorder` - order of surface in s direction
    `torder` - order of surface in t direction
    `type` - surface type

### gluNurbsCurve

    public void gluNurbsCurve(GLUnurbs r,
                              int nknots,
                              float[] knot,
                              int stride,
                              float[] ctlarray,
                              int order,
                              int type)

  Make a NURBS curve.

  Parameters:
    `r` - GLUnurbs object holding the curve
    `nknots` - number of knots
    `knot` - knot vector
    `stride` - number of control point coordinates
    `ctlarray` - control points
    `order` - order of the curve
    `type` - curve type

### gluEndCurve

    public void gluEndCurve(GLUnurbs r)

  Ends a curve definition.

  Parameters:
    `r` - GLUnurbs object holding the curve

Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.