Copyright (c) 1998,1999 Kenneth Albanowski. All rights reserved. Copyright (c) 2000 Ilya Zakharevich. All rights reserved. Copyright (c) 2007 Bob Free. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. This module provides access to most of the OpenGL 1.0, 1.1, and 1.2 APIs. Some amount of GLU is supported (I'm not quite sure what version it works out to), and GLUT should be completely supported up to API version 3. A small portion of GLX and X11 is supported, as an alternative to GLUT. Compatibility notes with OpenGL 0.4: 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. For more information, please read the OpenGL manual, available in OpenGL.pod. Portions of this module that directly derive from Stan's code are marked with "Melax" comments, and his copyright is described in the COPYRIGHT file. As this library is a simple binding between Perl and any library that complies with the OpenGL API, this module should interoperate seamlessly with any other modules that make use of OpenGL directly or (through another library) indirectly. For build instructions, please see the INSTALL file. GLUT libs (or compatible) must be installed in order to complete tests and install this OpenGL module. You can find GLUT at http://www.opengl.org/resources/libraries/glut For an incomplete implementation of GLUT in Perl, please see Gtk::GLArea::Glut, within the Gtk-Perl module. For a brief description of what functions are supported, please read "SUPPORTS", and better yet read the two sample files, test.pl and isosurf.pl. As of May 1999, I doubt I will be able to provide any significant support users of this module. Thanks for help developing this module goes to Stan Melax, Cass Everitt, Alligator Descarte, and probably others that I've forgotten. Happy Hacking, Kenneth Albanowski As of April 13, 2007, Bob Free has assumed primary ownership of this module. DOCUMENTATION AND INFO: http://graphcomp.com/opengl DISTRIBUTIONS: CPAN: cpan.org SVN: svn checkout svn://graphcomp.org/cpan/OpenGL OpenGL TARBALL: http://graphcomp.com/opengl/OpenGL-0.55.tar.gz ZIP: http://graphcomp.com/opengl/OpenGL-0.55.zip PPM 5.6.x: ppm install http://graphcomp.com/opengl/ppm56/OpenGL.ppd PPM 5.8.x: ppm install http://graphcomp.com/opengl/ppm58/OpenGL.ppd Enjoy! Bob Free Changes: 0.51: Portability enhancement (X and OS/2 PM), bug fixes, examples enhanced. _have_glp() should be used instead of _have_glx to test for presence of glp* functions. Remap OpenGL 1.1 functions into GL_EXT_vertex_array interface if needed. 0.52: More of the portability, bug fixes, and examples. New option -steal for glpOpenWindow() to allow drawing into an existing window (no "Visual" syncronization yet). GL_EXT_vertex_array done on the level of cpp. 0.53: Correct vertex_array detection in isosample.pl. Add more vertex_array constants (and move the definition earlier). Exchange (default) arguments for glp*: move display after window (should not break old stuff, since there was/is no way to query the display and window). New function $d = glpDisplay() (croaks on failure). Make glpOpenWindow() return the window handle. New functions with signatures void glpMoveResizeWindow(int x, int y, unsigned int width, unsigned int height, Window w, Display* display); void glpMoveWindow(int x, int y, Window w, Display* display); void glpResizeWindow(unsigned int width, unsigned int height, Window w, Display* display); (w and display are optional). 0.54: Martien Verbruggen fixed another Mesa limitation. #ifdef out unglob'ing: symbol not found on Solaris... 0.55: Bob Free Added OpenGL::Array->new_list Added OpenGL::Array->elements Added macro abstraction for wgl extensions Implemented GL_ARB_depth_texture Implemented GL_ARB_draw_buffers Implemented GL_ARB_fragment_program Implemented GL_ARB_fragment_program_shadow Implemented GL_ARB_half_float_pixel Implemented GL_ARB_multitexture Implemented GL_ARB_pixel_buffer_object Implemented GL_ARB_point_sprite Implemented GL_ARB_shadow Implemented GL_ARB_texture_border_clamp Implemented GL_ARB_texture_cube_map Implemented GL_ARB_texture_env_add Implemented GL_ARB_texture_float Implemented GL_ARB_texture_mirrored_repeat Implemented GL_ARB_texture_non_power_of_two Implemented GL_ARB_texture_rectangle Implemented GL_ARB_vertex_buffer_object Implemented GL_ARB_vertex_program Implemented GL_ATI_texture_float Implemented GL_ATI_texture_mirror_once Implemented GL_EXT_bgra Implemented GL_EXT_copy_texture Implemented GL_EXT_framebuffer_object Implemented GL_EXT_packed_pixels Implemented GL_EXT_pixel_buffer_object Implemented GL_EXT_rescale_normal Implemented GL_EXT_separate_specular_color Implemented GL_EXT_shadow_funcs Implemented GL_EXT_stencil_wrap Implemented GL_EXT_subtexture Implemented GL_EXT_textureD3 Implemented GL_EXT_texture_env_dot3 Implemented GL_EXT_texture_filter_anisotropic Implemented GL_EXT_texture_lod_bias implemented GL_EXT_texture_mirror_clamp implemented GL_EXT_vertex_array Implemented GL_HP_occlusion_test Implemented GL_IBM_rasterpos_clip Implemented GL_NV_blend_square Implemented GL_NV_copy_depth_to_color Implemented GL_NV_depth_clamp Implemented GL_NV_fog_distance Implemented GL_NV_fragment_program2 Implemented GL_NV_fragment_program_option Implemented GL_NV_light_max_exponent Implemented GL_NV_packed_depth_stencil Implemented GL_NV_texgen_reflection Implemented GL_NV_texture_expand_normal Implemented GL_NV_texture_rectangle Implemented GL_NV_vertex_program2_option Implemented GL_NV_vertex_program3 Implemented GL_S3_s3tc Implemented GL_SGIS_generate_mipmap Implemented GL_SGIS_texture_lod Implemented GL_SGIX_depth_texture Implemented GL_SGIX_shadow Implemented GL_SUN_slice_accum Added glDrawRangeElements_p Added glColorPointer_p Added glEdgeFlagPointer_p Added glIndexPointer_p Added glNormalPointer_p Added glTexCoordPointer_p Added glVertexPointer_p Added 'include' folder for updated GL header files Added 'utils' folder for header processing scripts Added glversion utility to enhance Makefile.PL Fixed compiler warnings in gl_util.c and OpenGL.xs Fixed glPolygonOffsetEXT bias mapping Fixed glDrawRangeElements_s code Fixed glGetPointerv_c params pointer Moved obsolete/deprecated extensions Added $glext_implemented hashref of implemented GL extensions Added glpCheckExtension Updated test.pl Ilya Zakharevich Updated support for SunRay Sherm Pendley Added MacOSX support Nomura-san Helped add FreeBSD support