tessBeginPolygon(#tessPtr{ptr=Tobj})   
  tessCallback(#tessPtr{ptr=Tobj}, Which, ESDL_TESSCB)   
  tessVertex(#tessPtr{ptr=Tobj}, {X,Y,Z})   
 beginCurve(Nurb=#nurbsPtr{})   
 beginSurface(Nurb=#nurbsPtr{})   
 beginTrim(Nurb=#nurbsPtr{})   
 build1DMipmaps(Target, InternalFormat, Width, Format, Type, Data)   
 build2DMipmaps(Target, InternalFormat, Width, Height, Format, Type, Data)   
 cylinder(Quad=#quadricPtr{}, Base, Top, Height, Slices, Stacks)   
 deleteNurbsRenderer(Nurb=#nurbsPtr{})   
 deleteQuadric(Quad=#quadricPtr{})   
 deleteTess(Tess=#tessPtr{})   
 disk(Quad=#quadricPtr{}, Inner, Outer, Slices, Loops)   
 endCurve(Nurb=#nurbsPtr{})   
 endSurface(Nurb=#nurbsPtr{})   
 endTrim(Nurb=#nurbsPtr{})   
 errorString(Error)   
 getNurbsProperty(Nurb=#nurbsPtr{}, Property)   
 getString(Name)   
 getTessProperty(Tess=#tessPtr{}, Which)   
 loadSamplingMatrices(Nurb=#nurbsPtr{}, Model, Perspective, View)   
 lookAt(EyeX, EyeY, EyeZ, CenterX, CenterY, CenterZ, UpX, UpY, UpZ)   
 newNurbsRenderer()   
 newQuadric()   
 newTess()   
 nurbsCurve(Nurb=#nurbsPtr{}, KnotCount, Knots, Stride, Control, Order, Type)   
 nurbsProperty(Nurb=#nurbsPtr{}, Property, Value)   
 nurbsSurface(Nurb=#nurbsPtr{}, SKnotCount, SKnots, TKnotCount, TKnots, SStride, TStride, Control, SOrder, TOrder, Type)   
 ortho2D(Left, Right, Bottom, Top)   
 partialDisk(Quad=#quadricPtr{}, Inner, Outer, Slices, Loops, Start, Sweep)   
 perspective(Fovy, Aspect, ZNear, ZFar)   
 pickMatrix(X, Y, DelX, DelY, Viewport)   
 project(ObjX, ObjY, ObjZ, Model, Proj, View)   
 pwlCurve(Nurb=#nurbsPtr{}, Count, Data, Stride, Type)   
 quadricDrawStyle(Quad=#quadricPtr{}, Draw)   
 quadricNormals(Quad=#quadricPtr{}, Normal)   
 quadricOrientation(Quad=#quadricPtr{}, Orientation)   
 quadricTexture(Quad=#quadricPtr{}, Texture)   
 scaleImage(Format, WIn, HIn, TypeIn, DataIn, WOut, HOut, TypeOut, #sdlmem{bin=DataOut})   
 sphere(Quad=#quadricPtr{}, Radius, Slices, Stacks)   
 tessBeginContour(#tessPtr{ptr=Ptr})   
 tessEndContour(#tessPtr{ptr=Ptr})   
 tessEndPolygon(#tessPtr{ptr=Ptr})   
 tessNormal(#tessPtr{ptr=Ptr}, ValueX, ValueY, ValueZ)   
 tessProperty(Tess=#tessPtr{}, Which, Data)   
 unProject(WinX, WinY, WinZ, Model, Proj, View)   
 triangulate(N, Ps)  Args: TessObject
Returns: ok
C-API: void gluTessBeginPolygon(GLUtesselator *tobj)
Args: Which, ESDL_TESSCB one of the callback functions defined in glu.hrl
Returns: ok
C-API: void gluTessCallback(GLUtesselator *tobj, GLenum which, void (GLCALLBACK *fn)())
Desc:
 ESDL have some predefined functions which must be supplied as callbacks funcs, see glu.hrl. New callbacks may be defined in the future, input and or implementations are welcomed.
Args: Tobj, Coords[, VtxData]
Returns: ok
C-API: void gluTessVertex(GLUtesselator *tobj, GLdouble coords[3], void *vertex_data)
Desc:
 VtxData is a tuple-list of extra data supported types are [{normal, {X,Y,Z}}, {color, {R,G,B[,A]}}, {texcoord2, {U,V}}] Use ?ESDL_TESSCB_VERTEX_DATA callback to call apropriate gl functions on the extra data.
Args: Nurb
Returns: ok
C-API: void gluBeginCurve(GLUnurbs * nurb)
Args: Nurb
Returns: ok
C-API: void gluBeginSurface(GLUnurbs * nurb)
Args: Nurb
Returns: ok
C-API: void gluBeginTrim(GLUnurbs * nurb)
Args: Target, InternalFormat, Width, Format, Type, <<[Data]>>
Returns: ?GL_INT
C-API: GLint gluBuild1DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type,  const void * data)
Args: Target, InternalFormat, Width, Height, Format, Type, <<[Data]>>
Returns: ?GL_INT
C-API: GLint gluBuild2DMipmaps(GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type,  const void * data)
Args: Quad, Base, Top, Height, Slices, Stacks
Returns: ok
C-API: void gluCylinder(GLUquadric * quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks)
Args: Nurb
Returns: ok
C-API: void gluDeleteNurbsRenderer(GLUnurbs * nurb)
Args: Quad
Returns: ok
C-API: void gluDeleteQuadric(GLUquadric * quad)
Args: Tess
Returns: ok
C-API: void gluDeleteTess(GLUtesselator * tess)
Args: Quad, Inner, Outer, Slices, Loops
Returns: ok
C-API: void gluDisk(GLUquadric * quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops)
Args: Nurb
Returns: ok
C-API: void gluEndCurve(GLUnurbs * nurb)
Args: Nurb
Returns: ok
C-API: void gluEndSurface(GLUnurbs * nurb)
Args: Nurb
Returns: ok
C-API: void gluEndTrim(GLUnurbs * nurb)
Args: Error
Returns: [?GL_UNSIGNED_BYTE]
C-API: GLubyte* gluErrorString(GLenum error)
Args: Nurb, Property
Returns: [Data]
C-API: void gluGetNurbsProperty(GLUnurbs * nurb, GLenum property, GLfloat * data)
Args: Name
Returns: [?GL_UNSIGNED_BYTE]
C-API: GLubyte* gluGetString(GLenum name)
Args: Tess, Which
Returns: [Data]
C-API: void gluGetTessProperty(GLUtesselator * tess, GLenum which, GLdouble * data)
Args: Nurb, <<[Model]>>, <<[Perspective]>>, <<[View]>>
Returns: ok
C-API: void gluLoadSamplingMatrices(GLUnurbs * nurb,  const GLfloat * model,  const GLfloat * perspective,  const GLint * view)
Args: EyeX, EyeY, EyeZ, CenterX, CenterY, CenterZ, UpX, UpY, UpZ
Returns: ok
C-API: void gluLookAt(GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ)
Returns: [NurbsPtr]
C-API: GLUnurbs* gluNewNurbsRenderer()
Returns: [QuadricPtr]
C-API: GLUquadric* gluNewQuadric()
Returns: [TessPtr]
C-API: GLUtesselator* gluNewTess()
Args: Nurb, KnotCount, <<[Knots]>>, Stride, <<[Control]>>, Order, Type
Returns: ok
C-API: void gluNurbsCurve(GLUnurbs * nurb, GLint knotCount,  const GLfloat * knots, GLint stride,  const GLfloat * control, GLint order, GLenum type)
Args: Nurb, Property, Value
Returns: ok
C-API: void gluNurbsProperty(GLUnurbs * nurb, GLenum property, GLfloat value)
Args: Nurb, SKnotCount, <<[SKnots]>>, TKnotCount, <<[TKnots]>>, SStride, TStride, <<[Control]>>, SOrder, TOrder, Type
Returns: ok
C-API: void gluNurbsSurface(GLUnurbs * nurb, GLint sKnotCount,  const GLfloat * sKnots, GLint tKnotCount,  const GLfloat * tKnots, GLint sStride, GLint tStride,  const GLfloat * control, GLint sOrder, GLint tOrder, GLenum type)
Args: Left, Right, Bottom, Top
Returns: ok
C-API: void gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top)
Args: Quad, Inner, Outer, Slices, Loops, Start, Sweep
Returns: ok
C-API: void gluPartialDisk(GLUquadric * quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep)
Args: Fovy, Aspect, ZNear, ZFar
Returns: ok
C-API: void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar)
Args: X, Y, DelX, DelY, <<[Viewport]>>
Returns: ok
C-API: void gluPickMatrix(GLdouble x, GLdouble y, GLdouble delX, GLdouble delY,  const GLint * viewport)
Args: ObjX, ObjY, ObjZ, <<[Model]>>, <<[Proj]>>, <<[View]>>
Returns: {WinX, WinY, WinZ} | error
C-API: GLint gluProject(GLdouble objX, GLdouble objY, GLdouble objZ,  const GLdouble * model,  const GLdouble * proj,  const GLint * view, GLdouble * winX, GLdouble * winY, GLdouble * winZ)
Args: Nurb, Count, <<[Data]>>, Stride, Type
Returns: ok
C-API: void gluPwlCurve(GLUnurbs * nurb, GLint count,  const GLfloat * data, GLint stride, GLenum type)
Args: Quad, Draw
Returns: ok
C-API: void gluQuadricDrawStyle(GLUquadric * quad, GLenum draw)
Args: Quad, Normal
Returns: ok
C-API: void gluQuadricNormals(GLUquadric * quad, GLenum normal)
Args: Quad, Orientation
Returns: ok
C-API: void gluQuadricOrientation(GLUquadric * quad, GLenum orientation)
Args: Quad, Texture
Returns: ok
C-API: void gluQuadricTexture(GLUquadric * quad, GLboolean texture)
Args: Format, WIn, HIn, TypeIn, <<[DataIn]>>, WOut, HOut, TypeOut, #sdlmem{} = DataOut
Returns: ?GL_INT
C-API: GLint gluScaleImage(GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn,  const void * dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid * dataOut)
Args: Quad, Radius, Slices, Stacks
Returns: ok
C-API: void gluSphere(GLUquadric * quad, GLdouble radius, GLint slices, GLint stacks)
Args: Tess
Returns: ok
C-API: void gluTessBeginContour(GLUtesselator * tess)
Args: Tess
Returns: ok
C-API: void gluTessEndContour(GLUtesselator * tess)
Args: Tess
Returns: ok
C-API: void gluTessEndPolygon(GLUtesselator * tess)
Args: Tess, ValueX, ValueY, ValueZ
Returns: ok
C-API: void gluTessNormal(GLUtesselator * tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ)
Args: Tess, Which, Data
Returns: ok
C-API: void gluTessProperty(GLUtesselator * tess, GLenum which, GLdouble data)
Args: WinX, WinY, WinZ, <<[Model]>>, <<[Proj]>>, <<[View]>>
Returns: {ObjX, ObjY, ObjZ} | error
C-API: GLint gluUnProject(GLdouble winX, GLdouble winY, GLdouble winZ,  const GLdouble * model,  const GLdouble * proj,  const GLint * view, GLdouble * objX, GLdouble * objY, GLdouble * objZ)
Args: Normal [Vertices]
Returns: {[{TriIndex}], [VertexPos]}