=head1 NAME OpenGL - v0.70 =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 acces 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 creation of a "visual" fails, the creation is retried I 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 functions. =item :glconstants Exports all symbols needed for the B functions. =item :glufunctions Exports all B functions. =item :gluconstants Exports all symbols needed for the B functions. =item :glutfunctions Exports all B functions. =item :glutconstants Exports all symbols needed for the B functions. =item :glxfunctions Exports all B functions. No longer exports C. =item :glxconstants Exports all symbols needed for the B 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 =head1 OTHER DOCUMENTATION Documentation, tips, sample source, benchmarks and available at L. =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