OpenGL - Perl module to display 3D data using OpenGL, GLU, GLUT, and GLX |
OpenGL - Perl module to display 3D data using OpenGL, GLU, GLUT, and GLX
use OpenGL; # exports most of the old functionality of OpenGL 0.4
use OpenGL qw(:old); # Same thing
use OpenGL qw(:glfunctions :glconstants); # exports functions and # constants for using OpenGL, without exporting GLU, GLUT, # or GLX stuff.
use OpenGL qw(:all); # exports all new functionality, without the OpenGL # 0.4 compatibility functions
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 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. The underlying OpenGL function will be passed a pointer to that string.
glutAddMenuEntry glutAddSubMenu glutAttachMenu glutBitmapCharacter glutBitmapWidth glutButtonBoxFunc glutChangeToMenuEntry glutChangeToSubMenu glutCopyColormap glutCreateMenu glutCreateSubWindow glutCreateWindow glutDestroyMenu glutDestroyWindow glutDetachMenu glutDeviceGet glutDialsFunc glutDisplayFunc glutEntryFunc glutEstablishOverlay glutExtensionSupported glutFullScreen glutGet glutGetColor glutGetMenu glutGetModifiers glutGetWindow glutHideOverlay glutHideWindow glutIconifyWindow glutIdleFunc glutInit glutInitDisplayMode glutInitWindowPosition glutInitWindowSize glutKeyboardFunc glutLayerGet glutMainLoop glutMenuStateFunc glutMenuStatusFunc glutMotionFunc glutMouseFunc glutOverlayDisplayFunc glutPassiveMotionFunc glutPopWindow glutPositionWindow glutPostOverlayRedisplay glutPostRedisplay glutPushWindow glutRemoveMenuItem glutRemoveOverlay glutReshapeFunc glutReshapeWindow glutSetColor glutSetCursor glutSetIconTitle glutSetMenu glutSetWindow glutSetWindowTitle glutShowOverlay glutShowWindow glutSolidCone glutSolidCube glutSolidDodecahedron glutSolidIcosahedron glutSolidOctahedron glutSolidSphere glutSolidTeapot glutSolidTetrahedron glutSolidTorus glutSpaceballButtonFunc glutSpaceballMotionFunc glutSpaceballRotateFunc glutSpecialFunc glutStrokeCharacter glutStrokeWidth glutSwapBuffers glutTabletButtonFunc glutTabletMotionFunc glutTimerFunc glutUseLayer glutVisibilityFunc glutWireCone glutWireCube glutWireDodecahedron glutWireIcosahedron glutWireOctahedron glutWireSphere glutWireTeapot glutWireTetrahedron glutWireTorus
gluBeginCurve gluBeginPolygon gluBeginSurface gluBeginTrim gluBuild1DMipmaps_s 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
glAccum glAlphaFunc glAreTexturesResidentEXT_p glAreTexturesResident_{cps} glArrayElement glArrayElementEXT glBegin glBindTexture glBindTextureEXT glBitmap_{cps} glBlendColorEXT glBlendEquationEXT glBlendFunc glCallList glCallLists_{cps} glClear glClearAccum glClearColor glClearDepth glClearIndex glClearStencil glClipPlane_{cps} glColor3b glColor3bv_{cps} glColor3d glColor3dv_{cps} glColor3f glColor3fv_{cps} glColor3i glColor3iv_{cps} glColor3s glColor3sv_{cps} glColor3ub glColor3ubv_{cps} glColor3ui glColor3uiv_{cps} glColor3us glColor3usv_{cps} glColor4b glColor4bv_{cps} glColor4d glColor4dv_{cps} glColor4f glColor4fv_{cps} glColor4i glColor4iv_{cps} glColor4s glColor4sv_{cps} glColor4ub glColor4ubv_{cps} glColor4ui glColor4uiv_{cps} glColor4us glColor4usv_{cps} glColorMask glColorMaterial glColorPointerEXT_c glColorPointer_c glCopyPixels glCopyTexImage1D glCopyTexImage1DEXT glCopyTexImage2D glCopyTexImage2DEXT glCopyTexSubImage1D glCopyTexSubImage1DEXT glCopyTexSubImage2D glCopyTexSubImage2DEXT glCopyTexSubImage3D glCopyTexSubImage3DEXT glCullFace glDeleteLists glDeleteTexturesEXT_p glDeleteTextures_{cps} glDepthFunc glDepthMask glDepthRange glDisable glDisableClientState glDrawArrays glDrawArraysEXT glDrawBuffer glDrawElements_{cps} glDrawPixels_{cps} glDrawRangeElements_{cs} glEdgeFlag glEdgeFlagPointerEXT_c glEdgeFlagPointer_c glEnable glEnableClientState glEnd glEndList glEvalCoord1d glEvalCoord1f glEvalCoord2d glEvalCoord2f glEvalMesh1 glEvalMesh2 glEvalPoint1 glEvalPoint2 glFeedbackBuffer_c glFinish glFlush glFogf glFogfv_{cps} glFogi glFogiv_{cps} glFrontFace glFrustum glGenLists glGenTexturesEXT_p glGenTextures_{cps} glGetBooleanv_{cps} glGetClipPlane_{cps} glGetDoublev_{cps} glGetError glGetFloatv_{cps} glGetIntegerv_{cps} glGetLightfv_{cps} glGetLightiv_{cps} glGetMapdv_{cps} glGetMapfv_{cps} glGetMapiv_{cps} glGetMaterialfv_{cps} glGetMaterialiv_{cps} glGetPixelMapfv_{cps} glGetPixelMapuiv_{cps} glGetPixelMapusv_{cps} glGetPointerv_{cps} glGetPolygonStipple_{cps} glGetString glGetTexEnvfv_{cps} glGetTexEnviv_{cps} glGetTexGendv_{cps} glGetTexGenfv_{cps} glGetTexGeniv_{cps} glGetTexImage_{cps} glGetTexLevelParameterfv_{cps} glGetTexLevelParameteriv_{cps} glGetTexParameterfv_{cps} glGetTexParameteriv_{cps} glHint glIndexMask glIndexPointerEXT_c glIndexPointer_c glIndexd glIndexi glInitNames glInterleavedArrays_c glIsEnabled glIsList glIsTexture glIsTextureEXT glLightModelf glLightModelfv_{cps} glLightModeli glLightModeliv_{cps} glLightf glLightfv_{cps} glLighti glLightiv_{cps} glLineStipple glLineWidth glListBase glLoadIdentity glLoadMatrixd_{cps} glLoadMatrixf_{cps} glLoadName glLogicOp glMap1d_{cps} glMap1f_{cps} glMap2d_{cps} glMap2f_{cps} glMapGrid1d glMapGrid1f glMapGrid2d glMapGrid2f glMaterialf glMaterialfv_{cps} glMateriali glMaterialiv_{cps} glMatrixMode glMultMatrixd_p glMultMatrixf_p glNewList glNormal3b glNormal3bv_{cps} glNormal3d glNormal3dv_{cps} glNormal3f glNormal3fv_{cps} glNormal3i glNormal3iv_{cps} glNormal3s glNormal3sv_{cps} glNormalPointerEXT_c glNormalPointer_c glOrtho glPassThrough glPixelMapfv_{cps} glPixelMapuiv_{cps} glPixelMapusv_{cps} glPixelStoref glPixelStorei glPixelTransferf glPixelTransferi glPixelZoom glPointSize glPolygonMode glPolygonOffset glPolygonOffsetEXT glPolygonStipple_{cps} glPopAttrib glPopClientAttrib glPopMatrix glPopName glPrioritizeTexturesEXT_p glPrioritizeTextures_{cps} glPushAttrib glPushClientAttrib glPushMatrix glPushName glRasterPos2d glRasterPos2dv_{cps} glRasterPos2f glRasterPos2fv_{cps} glRasterPos2i glRasterPos2iv_{cps} glRasterPos2s glRasterPos2sv_{cps} glRasterPos3d glRasterPos3dv_{cps} glRasterPos3f glRasterPos3fv_{cps} glRasterPos3i glRasterPos3iv_{cps} glRasterPos3s glRasterPos3sv_{cps} glRasterPos4d glRasterPos4dv_{cps} glRasterPos4f glRasterPos4fv_{cps} glRasterPos4i glRasterPos4iv_{cps} glRasterPos4s glRasterPos4sv_{cps} glReadBuffer glReadPixels_{cps} glRectd glRectdv_{cs} glRectf glRectfv_{cs} glRecti glRectiv_{cs} glRects glRectsv_{cs} glRenderMode glResizeBuffersMESA glRotated glRotatef glScaled glScalef glScissor glSelectBuffer_c glShadeModel glStencilFunc glStencilMask glStencilOp glTexCoord1d glTexCoord1dv_{cps} glTexCoord1f glTexCoord1fv_{cps} glTexCoord1i glTexCoord1iv_{cps} glTexCoord1s glTexCoord1sv_{cps} glTexCoord2d glTexCoord2dv_{cps} glTexCoord2f glTexCoord2fv_{cps} glTexCoord2i glTexCoord2iv_{cps} glTexCoord2s glTexCoord2sv_{cps} glTexCoord3d glTexCoord3dv_{cps} glTexCoord3f glTexCoord3fv_{cps} glTexCoord3i glTexCoord3iv_{cps} glTexCoord3s glTexCoord3sv_{cps} glTexCoord4d glTexCoord4dv_{cps} glTexCoord4f glTexCoord4fv_{cps} glTexCoord4i glTexCoord4iv_{cps} glTexCoord4s glTexCoord4sv_{cps} glTexCoordPointerEXT_c glTexCoordPointer_c glTexEnvf glTexEnvfv_{ps} glTexEnvi glTexEnviv_{ps} glTexGend glTexGendv_{cps} glTexGenf glTexGenfv_{cps} glTexGeni glTexGeniv_{cps} glTexImage1D_{cps} glTexImage2D_{cps} glTexImage3D_{cps} glTexParameterf glTexParameterfv_{cps} glTexParameteri glTexParameteriv_{cps} glTexSubImage1D_{cps} glTexSubImage2D_{cps} glTexSubImage3D_{cps} glTranslated glTranslatef glVertex2d glVertex2dv_{cps} glVertex2f glVertex2fv_{cps} glVertex2i glVertex2iv_{cps} glVertex2s glVertex2sv_{cps} glVertex3d glVertex3dv_{cps} glVertex3f glVertex3fv_{cps} glVertex3i glVertex3iv_{cps} glVertex3s glVertex3sv_{cps} glVertex4d glVertex4dv_{cps} glVertex4f glVertex4fv_{cps} glVertex4i glVertex4iv_{cps} glVertex4s glVertex4sv_{cps} glVertexPointerEXT_c glVertexPointer_c glViewport glWindowPos2dMESA glWindowPos2iMESA glWindowPos3dMESA glWindowPos3iMESA glWindowPos4dMESA glWindowPos4iMESA
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 instead.
XPending glXSwapBuffers glpReadTex glpXNextEvent glpXQueryPointer glpcOpenWindow
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 glpClipPlane glpDisplay glpGetClipPlane glpLoadMatrixd glpLoadMatrixf glpMainLoop glpMoveResizeWindow glpMoveWindow glpMultMatrixd glpMultMatrixf glpOpenWindow glpReadTex glpResizeWindow glpXNextEvent glpXQueryPointer gluLookAt gluOrtho2D gluPerspective
The OpenGL 0.4 library, written by Stan Melax, contains more support for some SGI specific functions then 0.5, so you may wish to stay with 0.4 on an SGI system. For other machines, 0.5 should greatly improve compatibility (compiling where 0.4 wouldn't have).
Code-level compatibility with OpenGL 0.4 is available if you refer to
OpenGL simply via use OpenGL;
. If you request specific packages (such as
use OpenGL qw(glfunctions glconstants glutfunctions);
), you'll get 0.5
specific support.
The following tags can be used to selectively import symbols into the main namespace.
Primary author of version 0.5 is Kenneth Albanowski. Derived from Stan's OpenGL 0.4, with pinches of Cass Everitt's OpenGL work.
Copyright (c) 1998,1999 Kenneth Albanowski <kjahds@kjahds.com>. All rights reserved.
Copyright (c) 2000 Ilya Zakharevich <ilya@math.ohio-state.edu>. All rights reserved.
Windows port: Jean-Louis Morel <jl_morel@bribes.org> home page: http://www.bribes.org/perl/wopengl.html
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
OpenGL - Perl module to display 3D data using OpenGL, GLU, GLUT, and GLX |