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 <
[email protected]>
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.56.tar.gz
ZIP:
http://graphcomp.com/opengl/OpenGL-0.56.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 "grafman" Free <
[email protected]>
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 "grafman" Free <
[email protected]>
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
Daiki Nomura
Helped add FreeBSD support
0.56: Bob "grafman" Free <
[email protected]>
Added $BUILD_VERSION
Updated OpenGL::Array->new
Added OpenGL::Array->length
Added OpenGL::Array->bind
Added OpenGL::Array->bound
Added OpenGL::Array->new_scalar
Added OpenGL::Array->new_pointer
Added OpenGL::Array->update_pointer
Updated OpenGL::Array->retrieve
Updated OpenGL::Array->retrieve_data
Added glVertexPointer_s
Added glNormalPointer_s
Added glColorPointer_s
Added glIndexPointer_s
Added glTexCoordPointer_s
Added glEdgeFlagPointer_s
Added glVertexPointerEXT_s
Added glNormalPointerEXT_s
Added glColorPointerEXT_s
Added glIndexPointerEXT_s
Added glTexCoordPointerEXT_s
Added glEdgeFlagPointerEXT_s
Added gluBuild1DMipmaps_c
Added gluBuild2DMipmaps_c
Added OpenGL::Image support to test.pl
Updated typemap to add GLcharARB and GLhandleARB
Implemented GL_EXT_texture_cube_map
Implemented GL_ARB_shader_objects
Implemented GL_ARB_fragment_shader
Implemented GL_ARB_vertex_shader
Implemented GL_ARB_shading_language_100
Implemented GL_EXT_Cg_shader
Updated test.pl to use OpenGL::Image and OpenGL::Shader
Geoffrey Broadwell
Fixed a bug in gl_pixelbuffer_size