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.


Perl OpenGL: POGL

As of 0.57 POGL now requires FreeGLUT: http://freeglut.sourceforge.net/
This was due to licensing constraints and lack of window close events in GLUT.

Note: FreeGLUT distributions on Linux are deployed as libglut.so files, making it
difficult to detect whether GLUT or FreeGLUT is installed - as such, FreeGLUT is
assumed.  See INSTALL to override this default.

Note also: POGL automatically installs FreeGLUT on Windows.



POGL provides access to most of the OpenGL 1.0, 1.1, and 1.2 APIs, and many OpenGL
Extensions, such as Framebuffer Objects (FBOs) and Vertex Array Objects (VBOs).

Some amount of GLU is supported, and GLUT is completely supported up to API
version 3, with some support for 4.0 and FreeGlut 2.4.0. A small portion of GLX
and X11 is supported, as an alternative to GLUT/freeglut.

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.

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.

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

0.57:   Bob "grafman" Free <[email protected]>
       Updated test.pl to fix fullscreen handling
       Fixed OpenGL.pod to reflect correct module name
       Added FBO constants to param enums in gl_util.c
       Implemented GL_ARB_point_parameters
       Implemented GL_ARB_multisample
       Implemented GL_ARB_color_buffer_float
       Added OGA calc and affine functions
       Added glpHasGPGPU
       Added an ATI workaround for GL_ARB_shading_language_100 dependencies
       Added VBO and FBO caching in OGAs - gl_util.h
       Fixed gluProject and gluUnProject - was converting matrices to ints
       Added glutSpecialUpFunc and glutWindowStatusFunc
       Added dist option to Makefile.PL to support binary distributions
       Switched from GLUT to FreeGLUT
       Added FreeGLUT folder for Win32 DLLs
       Implemented glutSetOption
       Implemented glutGameModeString
       Implemented glutEnterGameMode
       Implemented glutLeaveGameMode
       Implemented glutGameModeGet
       Added glpFullScreen and glpRestoreScreen
       Updated test.pl to support Game Mode
       Implemented glutCloseFunc
       Implemented glutLeaveMainLoop
       Major refactoring of Makefile.PL
       Renamed WGL interface option to W32API
       Added help message to Makefile.PL
       Added verbose option to Makefile.PL
       Added documentation comments to OpenGL.xs
       Added glpHasGLUT
       Updated test.pl to run texhack if no GLUT
       Added a countdown timer to examples/texhack
       Fixed GL_X_BYTES in assign
       Fixed vertex.glsl to work on newer nvidia cards
       Implemented glutIgnoreKeyRepeat
       Implemented glutSetKeyRepeat
       Implemented glutForceJoystickFunc
       Added FreeGLUT support for cygwin builds
       Fixed builds for Apple's recent Mac OS changes
       Added README for building on Mac OS

       Chris Marshall
       Added support for building POGL within cygwin
       Added Config.pm support

       Sisyphus
       Added partial support for MinGW/dmake - not yet fully functional
       Added "clean" target to Makefile.PL

       Alex Dodge
       Added glutKeyboardUpFunc