
=head1 NAME

OpenGL - Graphics display using OpenGL

=head1 SYNOPSIS


    use OpenGL qw(:all); # exports all new functionality, without
                         # the OpenGL-0.4 compatibility functions
    
    use OpenGL qw(:glfunctions :glconstants); # exports functions and
                         # constants for using OpenGL, without exporting
			 # GLU, GLUT, or GLX stuff.
    
    use OpenGL qw(:old); # Exports much old functionality of OpenGL 0.4
    
    use OpenGL; # DEPRECATED!  Same as above.  DEPRECATED!

  See also: POGL Objects
    
    * OpenGL::Array - optimized data arrays via C pointers
    
    * OpenGL::Image - direct C pointer access to ImageMagick image cache
    
    * OpenGL::Shader - abstracted shader interface: ARB, GLSL and Cg



=head1 PREREQUISITES

This module assumes that you have OpenGL, GLU, and some flavor of GLUT
properly installed on your system.  These will be names like libGL.so,
libGLU.so and libglut.so for unixen, opengl32.dll and glu32.dll for MS
Windows.

If used with OpenGL::Image, use v1.03 or higher.


=head1 DESCRIPTION

=head2 Naming convention:

Virtually all of the OpenGL 1.0, and 1.1 functions are available, and most
of 1.2. In general, the calling sequence is identical in Perl as in C.

Most functions that have no pointer arguments are called identically in
Perl as in C, and the same name is used.

Functions that use Perl array arguments and have been changed in "the obvious
way" -- to take a variable number of arguments and/or to return an array --
have the the same names as their C counterparts, but with a _p suffix.

All functions that take pointers are available with their original
calling syntax and a _c suffix. These are most useful when combined with
the OpenGL::Array module, which lets you allocate C arrays from Perl.

A third variant, _s, exists for most pointer functions, and takes a string
argument for each pointer or a reference to a Perl string containing packed
data. The underlying OpenGL function will be passed a pointer to that data.

=head2 GLUT functions

  done_glutInit
  glutAddMenuEntry
  glutAddSubMenu
  glutAttachMenu
  glutBitmapCharacter
  glutBitmapHeight
  glutBitmapLength
  glutBitmapString
  glutBitmapWidth
  glutButtonBoxFunc
  glutChangeToMenuEntry
  glutChangeToSubMenu
  glutCloseFunc
  glutCopyColormap
  glutCreateMenu
  glutCreateSubWindow
  glutCreateWindow
  glutDestroyMenu
  glutDestroyWindow
  glutDetachMenu
  glutDeviceGet
  glutDialsFunc
  glutDisplayFunc
  glutEnterGameMode
  glutEntryFunc
  glutEstablishOverlay
  glutExtensionSupported
  glutForceJoystickFunc
  glutFullScreen
  glutGameModeGet
  glutGameModeString
  glutGet
  glutGetColor
  glutGetMenu
  glutGetModifiers
  glutGetWindow
  glutHideOverlay
  glutHideWindow
  glutIconifyWindow
  glutIdleFunc
  glutIgnoreKeyRepeat
  glutInit
  glutInitDisplayMode
  glutInitDisplayString
  glutInitWindowPosition
  glutInitWindowSize
  glutKeyboardFunc
  glutKeyboardUpFunc
  glutLayerGet
  glutLeaveGameMode
  glutLeaveMainLoop
  glutMainLoop
  glutMainLoopEvent
  glutMenuDestroyFunc
  glutMenuStateFunc
  glutMenuStatusFunc
  glutMotionFunc
  glutMouseFunc
  glutMouseWheelFunc
  glutOverlayDisplayFunc
  glutPassiveMotionFunc
  glutPopWindow
  glutPositionWindow
  glutPostOverlayRedisplay
  glutPostRedisplay
  glutPostWindowOverlayRedisplay
  glutPostWindowRedisplay
  glutPushWindow
  glutRemoveMenuItem
  glutRemoveOverlay
  glutReportErrors
  glutReshapeFunc
  glutReshapeWindow
  glutSetColor
  glutSetCursor
  glutSetIconTitle
  glutSetKeyRepeat
  glutSetMenu
  glutSetOption
  glutSetWindow
  glutSetWindowTitle
  glutShowOverlay
  glutShowWindow
  glutSolidCone
  glutSolidCube
  glutSolidCylinder
  glutSolidDodecahedron
  glutSolidIcosahedron
  glutSolidOctahedron
  glutSolidRhombicDodecahedron
  glutSolidSphere
  glutSolidTeapot
  glutSolidTetrahedron
  glutSolidTorus
  glutSpaceballButtonFunc
  glutSpaceballMotionFunc
  glutSpaceballRotateFunc
  glutSpecialFunc
  glutSpecialUpFunc
  glutStrokeCharacter
  glutStrokeHeight
  glutStrokeLength
  glutStrokeString
  glutStrokeWidth
  glutSwapBuffers
  glutTabletButtonFunc
  glutTabletMotionFunc
  glutTimerFunc
  glutUseLayer
  glutVisibilityFunc
  glutWarpPointer
  glutWindowStatusFunc
  glutWireCone
  glutWireCube
  glutWireCylinder
  glutWireDodecahedron
  glutWireIcosahedron
  glutWireOctahedron
  glutWireRhombicDodecahedron
  glutWireSphere
  glutWireTeapot
  glutWireTetrahedron
  glutWireTorus

=head2 GLU functions

  gluBeginCurve
  gluBeginPolygon
  gluBeginSurface
  gluBeginTrim
  gluBuild1DMipmaps_c
  gluBuild1DMipmaps_s
  gluBuild2DMipmaps_c
  gluBuild2DMipmaps_s
  gluCylinder
  gluDeleteNurbsRenderer
  gluDeleteQuadric
  gluDeleteTess
  gluDisk
  gluEndCurve
  gluEndPolygon
  gluEndSurface
  gluEndTrim
  gluErrorString
  gluGetNurbsProperty_p
  gluGetString
  gluGetTessProperty_p
  gluLoadSamplingMatrices_p
  gluLookAt
  gluNewNurbsRenderer
  gluNewQuadric
  gluNewTess
  gluNextContour
  gluNurbsCurve_c
  gluNurbsSurface_c
  gluOrtho2D
  gluPartialDisk
  gluPerspective
  gluPickMatrix_p
  gluProject_p
  gluPwlCurve_c
  gluQuadricDrawStyle
  gluQuadricNormals
  gluQuadricOrientation
  gluQuadricTexture
  gluScaleImage_s
  gluSphere
  gluTessBeginCountour
  gluTessBeginPolygon
  gluTessCallback
  gluTessEndContour
  gluTessEndPolygon
  gluTessNormal
  gluTessProperty
  gluTessVertex
  gluUnProject_p

=head2 OpenGL functions

  glAccum
  glActiveTextureARB
  glAlphaFunc
  glAreTexturesResidentEXT_p
  glAreTexturesResident_c
  glAreTexturesResident_p
  glAreTexturesResident_s
  glArrayElement
  glArrayElementEXT
  glAttachObjectARB
  glBegin
  glBindAttribLocationARB
  glBindBufferARB
  glBindFramebufferEXT
  glBindProgramARB
  glBindRenderbufferEXT
  glBindTexture
  glBindTextureEXT
  glBitmap_c
  glBitmap_p
  glBitmap_s
  glBlendColorEXT
  glBlendEquationEXT
  glBlendFunc
  glBufferDataARB_c
  glBufferDataARB_p
  glBufferDataARB_s
  glBufferSubDataARB_c
  glBufferSubDataARB_p
  glBufferSubDataARB_s
  glCallList
  glCallLists_c
  glCallLists_p
  glCallLists_s
  glCheckFramebufferStatusEXT
  glClampColorARB
  glClear
  glClearAccum
  glClearColor
  glClearDepth
  glClearIndex
  glClearStencil
  glClientActiveTextureARB
  glClipPlane_c
  glClipPlane_p
  glClipPlane_s
  glColor3b
  glColor3bv_c
  glColor3bv_p
  glColor3bv_s
  glColor3d
  glColor3dv_c
  glColor3dv_p
  glColor3dv_s
  glColor3f
  glColor3fv_c
  glColor3fv_p
  glColor3fv_s
  glColor3i
  glColor3iv_c
  glColor3iv_p
  glColor3iv_s
  glColor3s
  glColor3sv_c
  glColor3sv_p
  glColor3sv_s
  glColor3ub
  glColor3ubv_c
  glColor3ubv_p
  glColor3ubv_s
  glColor3ui
  glColor3uiv_c
  glColor3uiv_p
  glColor3uiv_s
  glColor3us
  glColor3usv_c
  glColor3usv_p
  glColor3usv_s
  glColor4b
  glColor4bv_c
  glColor4bv_p
  glColor4bv_s
  glColor4d
  glColor4dv_c
  glColor4dv_p
  glColor4dv_s
  glColor4f
  glColor4fv_c
  glColor4fv_p
  glColor4fv_s
  glColor4i
  glColor4iv_c
  glColor4iv_p
  glColor4iv_s
  glColor4s
  glColor4sv_c
  glColor4sv_p
  glColor4sv_s
  glColor4ub
  glColor4ubv_c
  glColor4ubv_p
  glColor4ubv_s
  glColor4ui
  glColor4uiv_c
  glColor4uiv_p
  glColor4uiv_s
  glColor4us
  glColor4usv_c
  glColor4usv_p
  glColor4usv_s
  glColorMask
  glColorMaterial
  glColorPointerEXT_c
  glColorPointerEXT_p
  glColorPointerEXT_s
  glColorPointer_c
  glColorPointer_p
  glColorPointer_s
  glCompileShaderARB
  glCopyPixels
  glCopyTexImage1D
  glCopyTexImage1DEXT
  glCopyTexImage2D
  glCopyTexImage2DEXT
  glCopyTexSubImage1D
  glCopyTexSubImage1DEXT
  glCopyTexSubImage2D
  glCopyTexSubImage2DEXT
  glCopyTexSubImage3D
  glCopyTexSubImage3DEXT
  glCreateProgramObjectARB
  glCreateShaderObjectARB
  glCullFace
  glDeleteBuffersARB_c
  glDeleteBuffersARB_p
  glDeleteBuffersARB_s
  glDeleteFramebuffersEXT_c
  glDeleteFramebuffersEXT_p
  glDeleteFramebuffersEXT_s
  glDeleteLists
  glDeleteObjectARB
  glDeleteProgramsARB_c
  glDeleteProgramsARB_p
  glDeleteProgramsARB_s
  glDeleteRenderbuffersEXT_c
  glDeleteRenderbuffersEXT_p
  glDeleteRenderbuffersEXT_s
  glDeleteTexturesEXT_p
  glDeleteTextures_c
  glDeleteTextures_p
  glDeleteTextures_s
  glDepthFunc
  glDepthMask
  glDepthRange
  glDetachObjectARB
  glDisable
  glDisableClientState
  glDisableVertexAttribArrayARB
  glDrawArrays
  glDrawArraysEXT
  glDrawBuffer
  glDrawBuffersARB_c
  glDrawBuffersARB_p
  glDrawBuffersARB_s
  glDrawBuffers_c
  glDrawBuffers_p
  glDrawBuffers_s
  glDrawElements_c
  glDrawElements_p
  glDrawElements_s
  glDrawPixels_c
  glDrawPixels_p
  glDrawPixels_s
  glDrawRangeElements_c
  glDrawRangeElements_p
  glDrawRangeElements_s
  glEdgeFlag
  glEdgeFlagPointerEXT_c
  glEdgeFlagPointerEXT_p
  glEdgeFlagPointerEXT_s
  glEdgeFlagPointer_c
  glEdgeFlagPointer_p
  glEdgeFlagPointer_s
  glEnable
  glEnableClientState
  glEnableVertexAttribArrayARB
  glEnd
  glEndList
  glEvalCoord1d
  glEvalCoord1f
  glEvalCoord2d
  glEvalCoord2f
  glEvalMesh1
  glEvalMesh2
  glEvalPoint1
  glEvalPoint2
  glFeedbackBuffer_c
  glFeedbackBuffer_p -- not yet implemented
  glFeedbackBuffer_s -- not yet implemented
  glFinish
  glFlush
  glFogf
  glFogfv_c
  glFogfv_p
  glFogfv_s
  glFogi
  glFogiv_c
  glFogiv_p
  glFogiv_s
  glFramebufferRenderbufferEXT
  glFramebufferTexture1DEXT
  glFramebufferTexture2DEXT
  glFramebufferTexture3DEXT
  glFrontFace
  glFrustum
  glGenBuffersARB_c
  glGenBuffersARB_p
  glGenBuffersARB_s
  glGenFramebuffersEXT_c
  glGenFramebuffersEXT_p
  glGenFramebuffersEXT_s
  glGenLists
  glGenProgramsARB_c
  glGenProgramsARB_p
  glGenProgramsARB_s
  glGenRenderbuffersEXT_c
  glGenRenderbuffersEXT_p
  glGenRenderbuffersEXT_s
  glGenTexturesEXT_p
  glGenTextures_c
  glGenTextures_p
  glGenTextures_s
  glGenerateMipmapEXT
  glGetActiveAttribARB_c
  glGetActiveAttribARB_p
  glGetActiveAttribARB_s
  glGetActiveUniformARB_c
  glGetActiveUniformARB_p
  glGetActiveUniformARB_s
  glGetAttachedObjectsARB_c
  glGetAttachedObjectsARB_p
  glGetAttachedObjectsARB_s
  glGetAttribLocationARB_c
  glGetAttribLocationARB_p
  glGetBooleanv_c
  glGetBooleanv_p
  glGetBooleanv_s
  glGetBufferParameterivARB_c
  glGetBufferParameterivARB_p
  glGetBufferParameterivARB_s
  glGetBufferPointervARB_c
  glGetBufferPointervARB_p
  glGetBufferPointervARB_s
  glGetBufferSubDataARB_c
  glGetBufferSubDataARB_p
  glGetBufferSubDataARB_s
  glGetClipPlane_c
  glGetClipPlane_p
  glGetClipPlane_s
  glGetDoublev_c
  glGetDoublev_p
  glGetDoublev_s
  glGetError
  glGetFloatv_c
  glGetFloatv_p
  glGetFloatv_s
  glGetFramebufferAttachmentParameterivEXT_c
  glGetFramebufferAttachmentParameterivEXT_s
  glGetGLhandleARB
  glGetInfoLogARB_c
  glGetInfoLogARB_p
  glGetIntegerv_c
  glGetIntegerv_p
  glGetIntegerv_s
  glGetLightfv_c
  glGetLightfv_p
  glGetLightfv_s
  glGetLightiv_c
  glGetLightiv_p
  glGetLightiv_s
  glGetMapdv_c
  glGetMapdv_p
  glGetMapdv_s
  glGetMapfv_c
  glGetMapfv_p
  glGetMapfv_s
  glGetMapiv_c
  glGetMapiv_p
  glGetMapiv_s
  glGetMaterialfv_c
  glGetMaterialfv_p
  glGetMaterialfv_s
  glGetMaterialiv_c
  glGetMaterialiv_p
  glGetMaterialiv_s
  glGetObjectParameterfvARB_c
  glGetObjectParameterfvARB_p
  glGetObjectParameterfvARB_s
  glGetObjectParameterivARB_c
  glGetObjectParameterivARB_p
  glGetObjectParameterivARB_s
  glGetPixelMapfv_c
  glGetPixelMapfv_p
  glGetPixelMapfv_s
  glGetPixelMapuiv_c
  glGetPixelMapuiv_p
  glGetPixelMapuiv_s
  glGetPixelMapusv_c
  glGetPixelMapusv_p
  glGetPixelMapusv_s
  glGetPointerv_c
  glGetPointerv_p
  glGetPointerv_s
  glGetPolygonStipple_c
  glGetPolygonStipple_p
  glGetPolygonStipple_s
  glGetProgramEnvParameterdvARB_c
  glGetProgramEnvParameterdvARB_p
  glGetProgramEnvParameterdvARB_s
  glGetProgramEnvParameterfvARB_c
  glGetProgramEnvParameterfvARB_p
  glGetProgramEnvParameterfvARB_s
  glGetProgramLocalParameterdvARB_c
  glGetProgramLocalParameterdvARB_p
  glGetProgramLocalParameterdvARB_s
  glGetProgramLocalParameterfvARB_c
  glGetProgramLocalParameterfvARB_p
  glGetProgramLocalParameterfvARB_s
  glGetProgramStringARB_c
  glGetProgramStringARB_p
  glGetProgramStringARB_s
  glGetProgramivARB_c
  glGetProgramivARB_p
  glGetProgramivARB_s
  glGetRenderbufferParameterivEXT_c
  glGetRenderbufferParameterivEXT_s
  glGetShaderSourceARB_c
  glGetShaderSourceARB_p
  glGetString
  glGetTexEnvfv_c
  glGetTexEnvfv_p
  glGetTexEnvfv_s
  glGetTexEnviv_c
  glGetTexEnviv_p
  glGetTexEnviv_s
  glGetTexGendv_c
  glGetTexGendv_p
  glGetTexGendv_s
  glGetTexGenfv_c
  glGetTexGenfv_p
  glGetTexGenfv_s
  glGetTexGeniv_c
  glGetTexGeniv_p
  glGetTexGeniv_s
  glGetTexImage_c
  glGetTexImage_p
  glGetTexImage_s
  glGetTexLevelParameterfv_c
  glGetTexLevelParameterfv_p
  glGetTexLevelParameterfv_s
  glGetTexLevelParameteriv_c
  glGetTexLevelParameteriv_p
  glGetTexLevelParameteriv_s
  glGetTexParameterfv_c
  glGetTexParameterfv_p
  glGetTexParameterfv_s
  glGetTexParameteriv_c
  glGetTexParameteriv_p
  glGetTexParameteriv_s
  glGetUniformLocationARB_c
  glGetUniformLocationARB_p
  glGetUniformfvARB_c
  glGetUniformfvARB_p
  glGetUniformivARB_c
  glGetUniformivARB_p
  glGetVertexAttribPointervARB_c
  glGetVertexAttribdvARB_c
  glGetVertexAttribdvARB_p
  glGetVertexAttribdvARB_s
  glGetVertexAttribfvARB_c
  glGetVertexAttribfvARB_p
  glGetVertexAttribfvARB_s
  glGetVertexAttribivARB_c
  glGetVertexAttribivARB_p
  glGetVertexAttribivARB_s
  glHint
  glIndexMask
  glIndexPointerEXT_c
  glIndexPointerEXT_p
  glIndexPointerEXT_s
  glIndexPointer_c
  glIndexd
  glIndexi
  glInitNames
  glInterleavedArrays_c
  glIsBufferARB
  glIsEnabled
  glIsFramebufferEXT
  glIsList
  glIsProgramARB
  glIsRenderbufferEXT
  glIsTexture
  glIsTextureEXT
  glLightModelf
  glLightModelfv_c
  glLightModelfv_p
  glLightModelfv_s
  glLightModeli
  glLightModeliv_c
  glLightModeliv_p
  glLightModeliv_s
  glLightf
  glLightfv_c
  glLightfv_p
  glLightfv_s
  glLighti
  glLightiv_c
  glLightiv_p
  glLightiv_s
  glLineStipple
  glLineWidth
  glLinkProgramARB
  glListBase
  glLoadIdentity
  glLoadMatrixd_c
  glLoadMatrixd_p
  glLoadMatrixd_s
  glLoadMatrixf_c
  glLoadMatrixf_p
  glLoadMatrixf_s
  glLoadName
  glLogicOp
  glMap1d_c
  glMap1d_p
  glMap1d_s
  glMap1f_c
  glMap1f_p
  glMap1f_s
  glMap2d_c
  glMap2d_p
  glMap2d_s
  glMap2f_c
  glMap2f_p
  glMap2f_s
  glMapBufferARB_c
  glMapBufferARB_p
  glMapGrid1d
  glMapGrid1f
  glMapGrid2d
  glMapGrid2f
  glMaterialf
  glMaterialfv_c
  glMaterialfv_p
  glMaterialfv_s
  glMateriali
  glMaterialiv_c
  glMaterialiv_p
  glMaterialiv_s
  glMatrixMode
  glMultMatrixd_p
  glMultMatrixf_p
  glMultiTexCoord1dARB
  glMultiTexCoord1dvARB_c
  glMultiTexCoord1dvARB_c
  glMultiTexCoord1dvARB_c
  glMultiTexCoord1fARB
  glMultiTexCoord1fvARB_c
  glMultiTexCoord1fvARB_c
  glMultiTexCoord1fvARB_c
  glMultiTexCoord1iARB
  glMultiTexCoord1ivARB_c
  glMultiTexCoord1ivARB_c
  glMultiTexCoord1ivARB_c
  glMultiTexCoord1sARB
  glMultiTexCoord1svARB_c
  glMultiTexCoord1svARB_c
  glMultiTexCoord1svARB_c
  glMultiTexCoord2dARB
  glMultiTexCoord2dvARB_c
  glMultiTexCoord2dvARB_c
  glMultiTexCoord2dvARB_c
  glMultiTexCoord2fARB
  glMultiTexCoord2fvARB_c
  glMultiTexCoord2fvARB_c
  glMultiTexCoord2fvARB_c
  glMultiTexCoord2iARB
  glMultiTexCoord2ivARB_c
  glMultiTexCoord2ivARB_c
  glMultiTexCoord2ivARB_c
  glMultiTexCoord2sARB
  glMultiTexCoord2svARB_c
  glMultiTexCoord2svARB_c
  glMultiTexCoord2svARB_c
  glMultiTexCoord3dARB
  glMultiTexCoord3dvARB_c
  glMultiTexCoord3dvARB_c
  glMultiTexCoord3dvARB_c
  glMultiTexCoord3fARB
  glMultiTexCoord3fvARB_c
  glMultiTexCoord3fvARB_c
  glMultiTexCoord3fvARB_c
  glMultiTexCoord3iARB
  glMultiTexCoord3ivARB_c
  glMultiTexCoord3ivARB_c
  glMultiTexCoord3ivARB_c
  glMultiTexCoord3sARB
  glMultiTexCoord3svARB_c
  glMultiTexCoord3svARB_c
  glMultiTexCoord3svARB_c
  glMultiTexCoord4dARB
  glMultiTexCoord4dvARB_c
  glMultiTexCoord4dvARB_c
  glMultiTexCoord4dvARB_c
  glMultiTexCoord4fARB
  glMultiTexCoord4fvARB_c
  glMultiTexCoord4fvARB_c
  glMultiTexCoord4fvARB_c
  glMultiTexCoord4iARB
  glMultiTexCoord4ivARB_c
  glMultiTexCoord4ivARB_c
  glMultiTexCoord4ivARB_c
  glMultiTexCoord4sARB
  glMultiTexCoord4svARB_c
  glMultiTexCoord4svARB_c
  glMultiTexCoord4svARB_c
  glNewList
  glNormal3b
  glNormal3bv_c
  glNormal3bv_p
  glNormal3bv_s
  glNormal3d
  glNormal3dv_c
  glNormal3dv_p
  glNormal3dv_s
  glNormal3f
  glNormal3fv_c
  glNormal3fv_p
  glNormal3fv_s
  glNormal3i
  glNormal3iv_c
  glNormal3iv_p
  glNormal3iv_s
  glNormal3s
  glNormal3sv_c
  glNormal3sv_p
  glNormal3sv_s
  glNormalPointerEXT_c
  glNormalPointerEXT_p
  glNormalPointerEXT_s
  glNormalPointer_c
  glOrtho
  glPassThrough
  glPixelMapfv_c
  glPixelMapfv_p
  glPixelMapfv_s
  glPixelMapuiv_c
  glPixelMapuiv_p
  glPixelMapuiv_s
  glPixelMapusv_c
  glPixelMapusv_p
  glPixelMapusv_s
  glPixelStoref
  glPixelStorei
  glPixelTransferf
  glPixelTransferi
  glPixelZoom
  glPointParameterfARB
  glPointParameterfvARB_c
  glPointParameterfvARB_p
  glPointParameterfvARB_s
  glPointSize
  glPolygonMode
  glPolygonOffset
  glPolygonOffsetEXT
  glPolygonStipple_c
  glPolygonStipple_p
  glPolygonStipple_s
  glPopAttrib
  glPopClientAttrib
  glPopMatrix
  glPopName
  glPrioritizeTexturesEXT_p
  glPrioritizeTextures_c
  glPrioritizeTextures_p
  glPrioritizeTextures_s
  glProgramEnvParameter4dARB
  glProgramEnvParameter4dvARB_c
  glProgramEnvParameter4dvARB_p
  glProgramEnvParameter4dvARB_s
  glProgramEnvParameter4fARB
  glProgramEnvParameter4fvARB_c
  glProgramEnvParameter4fvARB_p
  glProgramEnvParameter4fvARB_s
  glProgramLocalParameter4dARB
  glProgramLocalParameter4dvARB_c
  glProgramLocalParameter4dvARB_p
  glProgramLocalParameter4dvARB_s
  glProgramLocalParameter4fARB
  glProgramLocalParameter4fvARB_c
  glProgramLocalParameter4fvARB_p
  glProgramLocalParameter4fvARB_s
  glProgramStringARB_c
  glProgramStringARB_p
  glProgramStringARB_s
  glPushAttrib
  glPushClientAttrib
  glPushMatrix
  glPushName
  glRasterPos2d
  glRasterPos2dv_c
  glRasterPos2dv_p
  glRasterPos2dv_s
  glRasterPos2f
  glRasterPos2fv_c
  glRasterPos2fv_p
  glRasterPos2fv_s
  glRasterPos2i
  glRasterPos2iv_c
  glRasterPos2iv_p
  glRasterPos2iv_s
  glRasterPos2s
  glRasterPos2sv_c
  glRasterPos2sv_p
  glRasterPos2sv_s
  glRasterPos3d
  glRasterPos3dv_c
  glRasterPos3dv_p
  glRasterPos3dv_s
  glRasterPos3f
  glRasterPos3fv_c
  glRasterPos3fv_p
  glRasterPos3fv_s
  glRasterPos3i
  glRasterPos3iv_c
  glRasterPos3iv_p
  glRasterPos3iv_s
  glRasterPos3s
  glRasterPos3sv_c
  glRasterPos3sv_p
  glRasterPos3sv_s
  glRasterPos4d
  glRasterPos4dv_c
  glRasterPos4dv_p
  glRasterPos4dv_s
  glRasterPos4f
  glRasterPos4fv_c
  glRasterPos4fv_p
  glRasterPos4fv_s
  glRasterPos4i
  glRasterPos4iv_c
  glRasterPos4iv_p
  glRasterPos4iv_s
  glRasterPos4s
  glRasterPos4sv_c
  glRasterPos4sv_p
  glRasterPos4sv_s
  glReadBuffer
  glReadPixels_c
  glReadPixels_p
  glReadPixels_s
  glRectd
  glRectdv_c
  glRectdv_s
  glRectf
  glRectfv_c
  glRectfv_s
  glRecti
  glRectiv_c
  glRectiv_s
  glRects
  glRectsv_c
  glRectsv_s
  glRenderMode
  glRenderbufferStorageEXT
  glResizeBuffersMESA
  glRotated
  glRotatef
  glSampleCoverageARB
  glScaled
  glScalef
  glScissor
  glSelectBuffer_c
  glShadeModel
  glShaderSourceARB_c
  glShaderSourceARB_p
  glStencilFunc
  glStencilMask
  glStencilOp
  glTexCoord1d
  glTexCoord1dv_c
  glTexCoord1dv_p
  glTexCoord1dv_s
  glTexCoord1f
  glTexCoord1fv_c
  glTexCoord1fv_p
  glTexCoord1fv_s
  glTexCoord1i
  glTexCoord1iv_c
  glTexCoord1iv_p
  glTexCoord1iv_s
  glTexCoord1s
  glTexCoord1sv_c
  glTexCoord1sv_p
  glTexCoord1sv_s
  glTexCoord2d
  glTexCoord2dv_c
  glTexCoord2dv_p
  glTexCoord2dv_s
  glTexCoord2f
  glTexCoord2fv_c
  glTexCoord2fv_p
  glTexCoord2fv_s
  glTexCoord2i
  glTexCoord2iv_c
  glTexCoord2iv_p
  glTexCoord2iv_s
  glTexCoord2s
  glTexCoord2sv_c
  glTexCoord2sv_p
  glTexCoord2sv_s
  glTexCoord3d
  glTexCoord3dv_c
  glTexCoord3dv_p
  glTexCoord3dv_s
  glTexCoord3f
  glTexCoord3fv_c
  glTexCoord3fv_p
  glTexCoord3fv_s
  glTexCoord3i
  glTexCoord3iv_c
  glTexCoord3iv_p
  glTexCoord3iv_s
  glTexCoord3s
  glTexCoord3sv_c
  glTexCoord3sv_p
  glTexCoord3sv_s
  glTexCoord4d
  glTexCoord4dv_c
  glTexCoord4dv_p
  glTexCoord4dv_s
  glTexCoord4f
  glTexCoord4fv_c
  glTexCoord4fv_p
  glTexCoord4fv_s
  glTexCoord4i
  glTexCoord4iv_c
  glTexCoord4iv_p
  glTexCoord4iv_s
  glTexCoord4s
  glTexCoord4sv_c
  glTexCoord4sv_p
  glTexCoord4sv_s
  glTexCoordPointerEXT_c
  glTexCoordPointerEXT_p
  glTexCoordPointerEXT_s
  glTexCoordPointer_c
  glTexEnvf
  glTexEnvfv_p
  glTexEnvfv_s
  glTexEnvi
  glTexEnviv_p
  glTexEnviv_s
  glTexGend
  glTexGendv_c
  glTexGendv_p
  glTexGendv_s
  glTexGenf
  glTexGenfv_c
  glTexGenfv_p
  glTexGenfv_s
  glTexGeni
  glTexGeniv_c
  glTexGeniv_p
  glTexGeniv_s
  glTexImage1D_c
  glTexImage1D_p
  glTexImage1D_s
  glTexImage2D_c
  glTexImage2D_p
  glTexImage2D_s
  glTexImage3DEXT_c
  glTexImage3DEXT_p
  glTexImage3DEXT_s
  glTexImage3D_c
  glTexImage3D_p
  glTexImage3D_s
  glTexParameterf
  glTexParameterfv_c
  glTexParameterfv_p
  glTexParameterfv_s
  glTexParameteri
  glTexParameteriv_c
  glTexParameteriv_p
  glTexParameteriv_s
  glTexSubImage1DEXT_c
  glTexSubImage1DEXT_p
  glTexSubImage1DEXT_s
  glTexSubImage1D_c
  glTexSubImage1D_p
  glTexSubImage1D_s
  glTexSubImage2DEXT_c
  glTexSubImage2DEXT_p
  glTexSubImage2DEXT_s
  glTexSubImage2D_c
  glTexSubImage2D_p
  glTexSubImage2D_s
  glTexSubImage3D_c
  glTexSubImage3D_p
  glTexSubImage3D_s
  glTranslated
  glTranslatef
  glUniform1fARB
  glUniform1fvARB_c
  glUniform1fvARB_p
  glUniform1fvARB_s
  glUniform1iARB
  glUniform1ivARB_c
  glUniform1ivARB_p
  glUniform1ivARB_s
  glUniform2fARB
  glUniform2fvARB_c
  glUniform2fvARB_p
  glUniform2fvARB_s
  glUniform2iARB
  glUniform2ivARB_c
  glUniform2ivARB_p
  glUniform2ivARB_s
  glUniform3fARB
  glUniform3fvARB_c
  glUniform3fvARB_p
  glUniform3fvARB_s
  glUniform3iARB
  glUniform3ivARB_c
  glUniform3ivARB_p
  glUniform3ivARB_s
  glUniform4fARB
  glUniform4fvARB_c
  glUniform4fvARB_p
  glUniform4fvARB_s
  glUniform4iARB
  glUniform4ivARB_c
  glUniform4ivARB_p
  glUniform4ivARB_s
  glUniformMatrix2fvARB_c
  glUniformMatrix2fvARB_p
  glUniformMatrix2fvARB_s
  glUniformMatrix3fvARB_c
  glUniformMatrix3fvARB_p
  glUniformMatrix3fvARB_s
  glUniformMatrix4fvARB_c
  glUniformMatrix4fvARB_p
  glUniformMatrix4fvARB_s
  glUnmapBufferARB
  glUseProgramObjectARB
  glValidateProgramARB
  glVertex2d
  glVertex2dv_c
  glVertex2dv_p
  glVertex2dv_s
  glVertex2f
  glVertex2fv_c
  glVertex2fv_p
  glVertex2fv_s
  glVertex2i
  glVertex2iv_c
  glVertex2iv_p
  glVertex2iv_s
  glVertex2s
  glVertex2sv_c
  glVertex2sv_p
  glVertex2sv_s
  glVertex3d
  glVertex3dv_c
  glVertex3dv_p
  glVertex3dv_s
  glVertex3f
  glVertex3fv_c
  glVertex3fv_p
  glVertex3fv_s
  glVertex3i
  glVertex3iv_c
  glVertex3iv_p
  glVertex3iv_s
  glVertex3s
  glVertex3sv_c
  glVertex3sv_p
  glVertex3sv_s
  glVertex4d
  glVertex4dv_c
  glVertex4dv_p
  glVertex4dv_s
  glVertex4f
  glVertex4fv_c
  glVertex4fv_p
  glVertex4fv_s
  glVertex4i
  glVertex4iv_c
  glVertex4iv_p
  glVertex4iv_s
  glVertex4s
  glVertex4sv_c
  glVertex4sv_p
  glVertex4sv_s
  glVertexAttrib1dARB
  glVertexAttrib1dvARB_c
  glVertexAttrib1dvARB_p
  glVertexAttrib1dvARB_s
  glVertexAttrib1fARB
  glVertexAttrib1fvARB_c
  glVertexAttrib1fvARB_p
  glVertexAttrib1fvARB_s
  glVertexAttrib1sARB
  glVertexAttrib1svARB_c
  glVertexAttrib1svARB_p
  glVertexAttrib1svARB_s
  glVertexAttrib2dARB
  glVertexAttrib2dvARB_c
  glVertexAttrib2dvARB_p
  glVertexAttrib2dvARB_s
  glVertexAttrib2fARB
  glVertexAttrib2fvARB_c
  glVertexAttrib2fvARB_p
  glVertexAttrib2fvARB_s
  glVertexAttrib2sARB
  glVertexAttrib2svARB_c
  glVertexAttrib2svARB_p
  glVertexAttrib2svARB_s
  glVertexAttrib3dARB
  glVertexAttrib3dvARB_c
  glVertexAttrib3dvARB_p
  glVertexAttrib3dvARB_s
  glVertexAttrib3fARB
  glVertexAttrib3fvARB_c
  glVertexAttrib3fvARB_p
  glVertexAttrib3fvARB_s
  glVertexAttrib3sARB
  glVertexAttrib3svARB_c
  glVertexAttrib3svARB_p
  glVertexAttrib3svARB_s
  glVertexAttrib4NbvARB_c
  glVertexAttrib4NbvARB_p
  glVertexAttrib4NbvARB_s
  glVertexAttrib4NivARB_c
  glVertexAttrib4NivARB_p
  glVertexAttrib4NivARB_s
  glVertexAttrib4NsvARB_c
  glVertexAttrib4NsvARB_p
  glVertexAttrib4NsvARB_s
  glVertexAttrib4NubARB
  glVertexAttrib4NubvARB_c
  glVertexAttrib4NubvARB_p
  glVertexAttrib4NubvARB_s
  glVertexAttrib4NuivARB_c
  glVertexAttrib4NuivARB_p
  glVertexAttrib4NuivARB_s
  glVertexAttrib4NusvARB_c
  glVertexAttrib4NusvARB_p
  glVertexAttrib4NusvARB_s
  glVertexAttrib4bvARB_c
  glVertexAttrib4bvARB_p
  glVertexAttrib4bvARB_s
  glVertexAttrib4dARB
  glVertexAttrib4dvARB_c
  glVertexAttrib4dvARB_p
  glVertexAttrib4dvARB_s
  glVertexAttrib4fARB
  glVertexAttrib4fvARB_c
  glVertexAttrib4fvARB_p
  glVertexAttrib4fvARB_s
  glVertexAttrib4ivARB_c
  glVertexAttrib4ivARB_p
  glVertexAttrib4ivARB_s
  glVertexAttrib4sARB
  glVertexAttrib4svARB_c
  glVertexAttrib4svARB_p
  glVertexAttrib4svARB_s
  glVertexAttrib4ubvARB_c
  glVertexAttrib4ubvARB_p
  glVertexAttrib4ubvARB_s
  glVertexAttrib4uivARB_c
  glVertexAttrib4uivARB_p
  glVertexAttrib4uivARB_s
  glVertexAttrib4usvARB_c
  glVertexAttrib4usvARB_p
  glVertexAttrib4usvARB_s
  glVertexAttribPointerARB_c
  glVertexPointerEXT_c
  glVertexPointerEXT_p
  glVertexPointerEXT_s
  glVertexPointer_c
  glVertexPointer_p
  glVertexPointer_s
  glViewport
  glWindowPos2dMESA
  glWindowPos2iMESA
  glWindowPos3dMESA
  glWindowPos3iMESA
  glWindowPos4dMESA
  glWindowPos4iMESA

  glpCheckExtension
  glpFullScreen
  glpHasGLUT
  glpRestoreScreen

=head2 GLX functions

GLX is only supported to the degree that Stan's original module supported 
it. Without an entire X binding it is of limited use, and I recommend using 
GLUT/FreeGLUT instead.

  XPending              (X11 only)
  glXSwapBuffers        (X11 only)
  glpXNextEvent         (X11 only)
  glpXQueryPointer      (X11 only)

  glpcOpenWindow	(Not exported, must use fully qualified package name)

=head2 Old functions

  AlreadyGrabbed
  AnyModifier
  AsyncBoth
  AsyncKeyboard
  AsyncPointer
  Button1
  Button1Mask
  Button1MotionMask
  Button2
  Button2Mask
  Button2MotionMask
  Button3
  Button3Mask
  Button3MotionMask
  Button4
  Button4Mask
  Button4MotionMask
  Button5
  Button5Mask
  Button5MotionMask
  ButtonMotionMask
  ButtonPress
  ButtonPressMask
  ButtonRelease
  ButtonReleaseMask
  CirculateNotify
  CirculateRequest
  ClientMessage
  ColormapChangeMask
  ColormapInstalled
  ColormapNotify
  ColormapUninstalled
  ConfigureNotify
  ConfigureRequest
  ControlMapIndex
  ControlMask
  CreateNotify
  DestroyNotify
  DirectColor
  EnterNotify
  EnterWindowMask
  Expose
  ExposureMask
  FamilyChaos
  FamilyDECnet
  FamilyInternet
  FocusChangeMask
  FocusIn
  FocusOut
  GrabFrozen
  GrabInvalidTime
  GrabModeAsync
  GrabModeSync
  GrabNotViewable
  GrabSuccess
  GraphicsExpose
  GravityNotify
  GrayScale
  KeyPress
  KeyPressMask
  KeyRelease
  KeyReleaseMask
  KeymapNotify
  KeymapStateMask
  LASTEvent
  LeaveNotify
  LeaveWindowMask
  LockMapIndex
  LockMask
  MapNotify
  MapRequest
  MappingNotify
  Mod1MapIndex
  Mod1Mask
  Mod2MapIndex
  Mod2Mask
  Mod3MapIndex
  Mod3Mask
  Mod4MapIndex
  Mod4Mask
  Mod5MapIndex
  Mod5Mask
  MotionNotify
  NoEventMask
  NoExpose
  NotifyAncestor
  NotifyDetailNone
  NotifyGrab
  NotifyHint
  NotifyInferior
  NotifyNonlinear
  NotifyNonlinearVirtual
  NotifyNormal
  NotifyPointer
  NotifyPointerRoot
  NotifyUngrab
  NotifyVirtual
  NotifyWhileGrabbed
  OwnerGrabButtonMask
  PlaceOnBottom
  PlaceOnTop
  PointerMotionHintMask
  PointerMotionMask
  PropertyChangeMask
  PropertyDelete
  PropertyNewValue
  PropertyNotify
  PseudoColor
  ReparentNotify
  ReplayKeyboard
  ReplayPointer
  ResizeRedirectMask
  ResizeRequest
  SelectionClear
  SelectionNotify
  SelectionRequest
  ShiftMapIndex
  ShiftMask
  StaticColor
  StaticGray
  StructureNotifyMask
  SubstructureNotifyMask
  SubstructureRedirectMask
  SyncBoth
  SyncKeyboard
  SyncPointer
  TrueColor
  UnmapNotify
  VisibilityChangeMask
  VisibilityFullyObscured
  VisibilityNotify
  VisibilityPartiallyObscured
  VisibilityUnobscured
  XPending
  X_PROTOCOL
  X_PROTOCOL_REVISION
  glAccum
  glAlphaFunc
  glBegin
  glBitmap
  glBlendColorEXT
  glBlendEquationEXT
  glBlendFunc
  glCallList
  glCallLists
  glClear
  glClearAccum
  glClearColor
  glClearDepth
  glClearIndex
  glClearStencil
  glClipPlane
  glColor3b
  glColor3bv
  glColor3d
  glColor3dv
  glColor3f
  glColor3fv
  glColor3i
  glColor3iv
  glColor3s
  glColor3sv
  glColor3ub
  glColor3ubv
  glColor3ui
  glColor3uiv
  glColor3us
  glColor3usv
  glColor4b
  glColor4bv
  glColor4d
  glColor4dv
  glColor4f
  glColor4fv
  glColor4i
  glColor4iv
  glColor4s
  glColor4sv
  glColor4ub
  glColor4ubv
  glColor4ui
  glColor4uiv
  glColor4us
  glColor4usv
  glColorMask
  glColorMaterial
  glConvolutionFilter1DEXT
  glConvolutionFilter2DEXT
  glConvolutionParameterfEXT
  glConvolutionParameterfvEXT
  glConvolutionParameteriEXT
  glConvolutionParameterivEXT
  glCopyConvolutionFilter1DEXT
  glCopyConvolutionFilter2DEXT
  glCopyPixels
  glCullFace
  glDeleteLists
  glDepthFunc
  glDepthMask
  glDepthRange
  glDetailTexFuncSGIS
  glDisable
  glDrawBuffer
  glDrawPixels
  glEdgeFlag
  glEdgeFlagv
  glEnable
  glEnd
  glEndList
  glEvalCoord1d
  glEvalCoord1dv
  glEvalCoord1f
  glEvalCoord1fv
  glEvalCoord2d
  glEvalCoord2dv
  glEvalCoord2f
  glEvalCoord2fv
  glEvalMesh1
  glEvalMesh2
  glEvalPoint1
  glEvalPoint2
  glFeedbackBuffer
  glFinish
  glFlush
  glFogf
  glFogfv
  glFogi
  glFogiv
  glFrontFace
  glFrustum
  glGenLists
  glGetBooleanv
  glGetClipPlane
  glGetConvolutionFilterEXT
  glGetConvolutionParameterfvEXT
  glGetConvolutionParameterivEXT
  glGetDetailTexFuncSGIS
  glGetDoublev
  glGetError
  glGetFloatv
  glGetHistogramEXT
  glGetHistogramParameterfvEXT
  glGetHistogramParameterivEXT
  glGetIntegerv
  glGetLightfv
  glGetLightiv
  glGetMapdv
  glGetMapfv
  glGetMapiv
  glGetMaterialfv
  glGetMaterialiv
  glGetMinmaxEXT
  glGetMinmaxParameterfvEXT
  glGetMinmaxParameterivEXT
  glGetPixelMapfv
  glGetPixelMapuiv
  glGetPixelMapusv
  glGetPolygonStipple
  glGetSeparableFilterEXT
  glGetSharpenTexFuncSGIS
  glGetTexEnvfv
  glGetTexEnviv
  glGetTexGendv
  glGetTexGenfv
  glGetTexGeniv
  glGetTexImage
  glGetTexLevelParameterfv
  glGetTexLevelParameteriv
  glGetTexParameterfv
  glGetTexParameteriv
  glHint
  glHistogramEXT
  glIndexMask
  glIndexd
  glIndexdv
  glIndexf
  glIndexfv
  glIndexi
  glIndexiv
  glIndexs
  glIndexsv
  glInitNames
  glIsEnabled
  glIsList
  glLightModelf
  glLightModelfv
  glLightModeli
  glLightModeliv
  glLightf
  glLightfv
  glLighti
  glLightiv
  glLineStipple
  glLineWidth
  glListBase
  glLoadIdentity
  glLoadMatrixd
  glLoadMatrixf
  glLoadName
  glLogicOp
  glMap1d
  glMap1f
  glMap2d
  glMap2f
  glMapGrid1d
  glMapGrid1f
  glMapGrid2d
  glMapGrid2f
  glMaterialf
  glMaterialfv
  glMateriali
  glMaterialiv
  glMatrixMode
  glMinmaxEXT
  glMultMatrixd
  glMultMatrixf
  glNewList
  glNormal3b
  glNormal3bv
  glNormal3d
  glNormal3dv
  glNormal3f
  glNormal3fv
  glNormal3i
  glNormal3iv
  glNormal3s
  glNormal3sv
  glOrtho
  glPassThrough
  glPixelMapfv
  glPixelMapuiv
  glPixelMapusv
  glPixelStoref
  glPixelStorei
  glPixelTransferf
  glPixelTransferi
  glPixelZoom
  glPointSize
  glPolygonMode
  glPolygonOffsetEXT
  glPolygonStipple
  glPopAttrib
  glPopMatrix
  glPopName
  glPushAttrib
  glPushMatrix
  glPushName
  glRasterPos2d
  glRasterPos2dv
  glRasterPos2f
  glRasterPos2fv
  glRasterPos2i
  glRasterPos2iv
  glRasterPos2s
  glRasterPos2sv
  glRasterPos3d
  glRasterPos3dv
  glRasterPos3f
  glRasterPos3fv
  glRasterPos3i
  glRasterPos3iv
  glRasterPos3s
  glRasterPos3sv
  glRasterPos4d
  glRasterPos4dv
  glRasterPos4f
  glRasterPos4fv
  glRasterPos4i
  glRasterPos4iv
  glRasterPos4s
  glRasterPos4sv
  glReadBuffer
  glReadPixels
  glRectd
  glRectdv
  glRectf
  glRectfv
  glRecti
  glRectiv
  glRects
  glRectsv
  glRenderMode
  glResetHistogramEXT
  glResetMinmaxEXT
  glRotated
  glRotatef
  glSampleMaskSGIS
  glSamplePatternSGIS
  glScaled
  glScalef
  glScissor
  glSelectBuffer
  glSeparableFilter2DEXT
  glShadeModel
  glSharpenTexFuncSGIS
  glStencilFunc
  glStencilMask
  glStencilOp
  glTagSampleBufferSGIX
  glTexCoord1d
  glTexCoord1dv
  glTexCoord1f
  glTexCoord1fv
  glTexCoord1i
  glTexCoord1iv
  glTexCoord1s
  glTexCoord1sv
  glTexCoord2d
  glTexCoord2dv
  glTexCoord2f
  glTexCoord2fv
  glTexCoord2i
  glTexCoord2iv
  glTexCoord2s
  glTexCoord2sv
  glTexCoord3d
  glTexCoord3dv
  glTexCoord3f
  glTexCoord3fv
  glTexCoord3i
  glTexCoord3iv
  glTexCoord3s
  glTexCoord3sv
  glTexCoord4d
  glTexCoord4dv
  glTexCoord4f
  glTexCoord4fv
  glTexCoord4i
  glTexCoord4iv
  glTexCoord4s
  glTexCoord4sv
  glTexEnvf
  glTexEnvfv
  glTexEnvi
  glTexEnviv
  glTexGend
  glTexGendv
  glTexGenf
  glTexGenfv
  glTexGeni
  glTexGeniv
  glTexImage1D
  glTexImage2D
  glTexImage3DEXT
  glTexParameterf
  glTexParameterfv
  glTexParameteri
  glTexParameteriv
  glTexSubImage1DEXT
  glTexSubImage2DEXT
  glTexSubImage3DEXT
  glTranslated
  glTranslatef
  glVertex2d
  glVertex2dv
  glVertex2f
  glVertex2fv
  glVertex2i
  glVertex2iv
  glVertex2s
  glVertex2sv
  glVertex3d
  glVertex3dv
  glVertex3f
  glVertex3fv
  glVertex3i
  glVertex3iv
  glVertex3s
  glVertex3sv
  glVertex4d
  glVertex4dv
  glVertex4f
  glVertex4fv
  glVertex4i
  glVertex4iv
  glVertex4s
  glVertex4sv
  glViewport
  glXSwapBuffers        (X11 only)
  gluLookAt
  gluOrtho2D
  gluPerspective

=head2 "Perl" GL access shortcuts

  glpClipPlane
  glpDisplay            (X11 only)
  glpFlush
  glpFullScreen
  glpGetClipPlane
  glpLoadMatrixd
  glpLoadMatrixf
  glpMainLoop
  glpMoveResizeWindow   (X11 only)
  glpMoveWindow         (X11 only)
  glpMultMatrixd
  glpMultMatrixf
  glpOpenWindow         (X11 only)
  glpPrintString	(from PDL)
  glpRasterFont 	(from PDL, X11 only)
  glpReadTex
  glpResizeWindow       (X11 only)
  glpRestoreScreen
  glpSetDebug		(from PDL)
  glpSolidSphere
  glpXNextEvent         (X11 only)
  glpXQueryPointer      (X11 only)

glpOpenWindow() provides the preferred interface to glpcOpenWindow().
Both these functions have a special (mis)feature to handle cases when
one does not need double buffering: if no GLX_DOUBLEBUFFER is specified,
I<and> creation of a "visual" fails, the creation is retried I<with>
GLX_DOUBLEBUFFER specified (to make it easier to support implementation
which do not have SINGLEBUFFER visuals - which is typical on Suns).

Since "finishing drawing" with and without GLX_DOUBLEBUFFER should be
done in different ways, a convenience function glpFlush() is provided;
it operates the same as glFlush() if no enable-GLX_DOUBLEBUFFER hack
was need, otherwise it acts as glFlush() followed by
glXSwapBuffers().  This function should be used only in the case no
GLX_DOUBLEBUFFER attribute was given to glpOpenWindow().

Additionally, in absence of GLUT, glpSolidSphere() is aliased to
glutSolidSphere(), to make writing simple portable backward-compatible
scripts easier.

=head1 Historical Compatibility

The original OpenGL-0.4 library, written by Stan Melax, was releaseed to
CPAN on 16-Feb-1996.

The OpenGL-0.5 library, by Kenneth Albanowski, was released to CPAN
on 24-Apr-1999.

Ilya Zakharevich released OpenGL-0.53 on 05-Nov-2000 and and OpenGL-0.54
on 26-May-2002.

Bob Free has been responsible for the OpenGL module development starting
with OpenGL-0.55 on 26-Apr-2007.

Chris Marshall has been responsible for the OpenGL module development
starting with OpenGL-0.58 on 06-Sep-2009.

Compatibility with these earlier libraries is in a state of flux with
with on-going work to refactor the Perl OpenGL module to improve support
for other GUI toolkits with Perl bindings and to update the version of
OpenGL API supported. 

=head1 EXPORTS

The following tags can be used to selectively import symbols into the main namespace.

=over

=item :all

Exports all symbols (constants and functions).

=item :functions

Exports all functions.

=item :constants

Exports all constants.

=item :glfunctions

Exports all B<gl*> functions.

=item :glconstants

Exports all symbols needed for the B<gl*> functions.

=item :glufunctions

Exports all B<glu*> functions.

=item :gluconstants

Exports all symbols needed for the B<glu*> functions.

=item :glutfunctions

Exports all B<glut*> functions.

=item :glutconstants

Exports all symbols needed for the B<glut*> functions.

=item :glxfunctions

Exports all B<glx*> functions.  No longer exports C<glpcOpenWindow()>.

=item :glxconstants

Exports all symbols needed for the B<glx*> functions.

=item :old

Exports all old functions and constants.

=item :oldfunctions

Exports all old functions.

=item :oldconstants

Exports all symbols needed for the old functions.

=back

=head1 AUTHORS

Primary OpenGL Maintainer Chris Marshall (PAUSE id CHM)
Co-Maintainer: Bob "grafman" Free - http://graphcomp.com/opengl

Original Author: Stan Melax 

Primary author of 0.50: Kenneth Albanowski; derived from Stan's 
OpenGL 0.4, with pinches of Cass Everitt's OpenGL work.

Copyright (c) 1998,1999 Kenneth Albanowski. All rights reserved.

Copyright (c) 2000 Ilya Zakharevich. All rights reserved.

Windows port: Jean-Louis Morel - http://www.bribes.org/perl/wopengl.html

Primary author of 0.55+: Bob Free; added support for 52 OpenGL extensions,
including FBO, VBO and Vertex/Fragment Programs.

Copyright (c) 2007 Bob Free. All rights reserved.

Contributing developer of 0.57+: Chris Marshall: cygwin port, PDL integration, release support.
Copyright (c) 2009 Christopher Marshall. All rights reserved.

MacOSX port: Sherm Pendley

FreeBSD support: Nomura-san


This program is free software; you can redistribute it and/or modify it 
under the same terms as Perl itself.


=head1 DISTRIBUTIONS

POGL Project site: L<http://sourceforge.net/projects/pogl/>

=head1 OTHER DOCUMENTATION

Documentation, tips, sample source, benchmarks and available at
L<http://graphcomp.com/opengl>.

=head2 SOURCE

  CPAN: http://search.cpan.org/~chm/
  GIT:  git clone git://git.code.sf.net/p/pogl/code pogl-code (Read only)
  TARBALL: http://sourceforge.net/p/pogl/code/ci/master/tarball

=head2 WINDOWS BINARIES

  For 32-bit perls 5.8.x and later:
    ppm install http://www.sisyphusion.tk/ppm/OpenGL.ppd
  
  For 64-bit perls 5.8.x and later:
    ppm install http://www.sisyphusion.tk/ppm/OpenGL.ppd
