Appendix A. Changes

2.0.0.44

  1. Fixed PyMem_Del -> PyObject_Del bug; Patch #455646.
  2. Made glDrawRangeElementsEXT more like other array functions including adding decoration variants
  3. Added some aliases for various extension initialization functions.
  4. Added the GL_OML_subsample, GL_OML_resample, and GL_OML_interlace extensions
  5. Fixed Numeric import bug in the interface_util library.
  6. Added quaternion class.
  7. Changed comments over to C style.
  8. Fixed install bug which prevented installation of demos.

2.0.0.42beta

  1. Added GL 1.0 compatibility.
  2. Moved info.py into the new scripts directory
  3. Added a "__build__" attribute to OpenGL/__init__.py
  4. Added the GL_EXT_texture_object, GL_EXT_polygon_offset, and the GL_EXT_vertex_array extensions
  5. Made glDrawElements more like other array functions including adding decoration variants

2.0.0.40beta

  1. Fixed the export name of gluPwlCurve and gluNurbsCurve
  2. Fixed mishandling of count parameter in gluPwlCurve and changed the prototype to gluPwlCurve(nobj, points, type).
  3. Changed proto of gluNurbsCurve to gluNurbsCurve(nobj, knot, ctlarray, type) -> None
  4. Changed prototype of gluNurbsSurface to gluNurbsSurface(nobj, sknot, tknot, ctlarray, type) -> None
  5. Added initialization functions to extension modules.
  6. Added the platform specific source platform.c
  7. Killed the OpenGL.extensions module, no longer needed.
  8. Added a trackball module.

2.0.0.34b3

  1. Fixed the export name of gluTessVertex, was _gluTessVertex.
  2. Fixed misuse of PyObject_CallFunction which resulted in wrong number of arguments passed when only one argument was being passed to a callback. Affected several functions in the GLU and GLUT modules.
  3. Added locking mechanism to GLUtesselator and GLUnurbs to prevent user data from being collected by the garbage collector.
  4. Fixed prototype of gluUnProject4, was missing clipW argument.
  5. Fixed prototypes of gluBuild1DMipmapLevels, was missing some arguments.
  6. Fixed gluNurbsCallbackData wrapper, wrong object pointer cast.
  7. Changed list separator in config files to os.pathsep instead of a comma.
  8. Fixed bug in PyObject_Dimension on non-Numeric arrays.
  9. Fixed docstrings of glTexImage2D
  10. setup.py now adds the current directory to the search path. Needed since build_py has to execute various configure programs.

2.0.0.27b2

  1. When testing for a GLerror an attempt is now made to verify that the current context is valid. This avoids strange behavior like glutDestroyWindow throwing GLerror when it is used to destroy the current window. Also in 2.0b1 a maximum limit of 16 errors could be return by GLerror. This was done to avoid infinite loop result resulting from calls to glGetError without a valid context. This is not needed anymore, so the hard-coded limit has been removed.
  2. Fixed sys.argv bugs in knot and molehill demos.
  3. Added short name aliases like glTranslate = glTranslated.
  4. Fixed glGetBooleanv, now needs only one argument.
  5. Added build number to setup.
  6. The current version number of the entire PyOpenGL system is now stored in __version__.
  7. Fixed various Python 1.5/1.6 incompatibilities.
  8. Fixed image routines which return packed images like glGetPolygonStipple.
  9. Added glGetPolgonStippleub and glPolygonStippleub to use arrays instead of packed strings.
  10. Fixed bugs in glMap{1|2}{f|d} in the automatic selection of ustride and vstride arguments.
  11. Fixed glRenderMode and glSelectBuffer to avoid the strange behavior of glSelectBuffer(0, NULL) on some systems.
  12. glutInit now raises TypeError if its single argument is not a non-string sequence.
  13. Removed the GL_EXT_polygon_offset extension since it is a standard part of OpenGL 1.1 and some systems seem to define GL_EXT_polygon_offset yet don't export glPolygonOffsetEXT.
  14. Fixed bug in glGetBooleanv which caused it to return the wrong number of values, i.e. not parameter specific.
  15. Fixed a bug in WGL routines in which the previous error wasn't cleared.
  16. Added support for GLU 1.0 and 1.1 to support Mesa.
  17. Added the info script.
  18. Added new platform specific config files.
  19. Fixed broken prototypes in GL.EXT.coordinate_frame, GL.EXT.cull_vertex, GL.EXT.multi_draw_arrays and GL.EXT.fog_coord.
  20. Changed the generation of shadow wrappers a bit and turned the GL and GLU modules into shadow wrappers.

2.0b1

  1. WGL modules now throw WindowsError (OSError for Python 2.0) on a windows error.
  2. Added GLerror to GL and GLUerror to GLU. "except GLerror, e:" now works.
  3. GLerror now handles multiple errors resulting from distributed systems.

2.0a4

  1. Made the viewport argument to gluPickMatrix a keyword.
  2. Added a glSelectWithCallback function. This function is pretty trivial since glRenderMode already returns a selection buffer. See the release notes.
  3. Made the order arguments to glMap{1|2}{f|v}v automatic and removed the stride arguments.
  4. Changed GLexception and GLUexception to GLerror and GLUerror.
  5. Killed the RTS module.
  6. Killed the GL.Autodesk.facet_arrays module. Doesn't look as though it is possible to support it using the current memory management model.
  7. glRenderMode now returns the instance of glFeedbackBuffer or glSelectBuffer instead of a copy. It also resets the GL's pointer to the buffer to NULL after it's done.
  8. Fixed build bug in which modules with the same name like WGL.ARB.extensions_string and WGL.EXT.extensions_string had conflicting obj names (really a work around for a distutils bug.)
  9. Fixed WGL.EXT.extensions_string prototype and reference in extensions.py
  10. Removed checkExtension and raiseExtension.
  11. Made considerable changes to the extensions module.
  12. GLerror with a code of GL_INVALID_OPERATION is now thrown on an attempt use an unsupported extension. This is done to match the OpenGL 1.2 behavior of GL_ARB_imaging.

2.0a3

  1. Improved font and menu code of GLUT.
  2. Added the GLE module.
  3. Fixed exported name of gluNurbsSurface, was _gluNurbsSurface.
  4. Added RTS module and hello2rts demo.
  5. The array code of PyOpenGL now works even if Numeric support was compiled in, but Numeric is not found at runtime.
  6. A NotImplementedError is thrown if an extension is not available even on systems that use static extensions. If the extension is available and glGetProcAddress fails then an ImportError is thrown.
  7. Fixed Joystick callback in GLUT 4.0 code (poll_interval parameter was missing.)
  8. Added support for preliminary GLUT 4.0 code. It's inclusion depends on the macro GLUT_XLIB_IMPLEMENTATION not on the macro GLUT_API_VERSION since GLUT_API_VERSION does not include the minor version number.
  9. Added glTexSubImage1D{ub|b|us|s|ui|i|f|d} and glTexSubImage2D{ub|b|us|s|ui|i|f|d}
  10. Added support for 3D and 4D texturing.
  11. Added GLU 1.3 support.
  12. Added lots more extensions (the running tally is now at 165.)

2.0a2

  1. Changed the base class of GLUexception to EnvironmentError instead of Exception
  2. Added support for glInterleavedArrays.
  3. Removed nonsense variants of glVertexPointer, etc. such as glVertexPointerub. No corresponding GL calls exist.
  4. Added collection of convenience functions (glVertexd, glVertexf, etc.) to avoid silly calls like glVertex3f([0, 1, 2]) or glColor4f(0, 1, 2, 3)
  5. Changed the exception thrown on an attempt to use an unsupported extension to NotImplementedError instead of ImportError.
  6. Added the module extensions which does various useful things like getting the list of implemented or supported extensions.
  7. Added extension support for GLU.
  8. Removed glGetError since any GL error will now throw an instance of GLexception which is derived from EnvironmentError.
  9. Added multi-window support to GLUT. Window callbacks are now window specific as per the specification.
  10. Added gluScaleImagef, glScaleImagei, etc. to GLU.
  11. Changed implementation of GLUnurbs and GLUquadric to match that of GLUtesselator to prepare for addition of GLU 1.3 support.
  12. The model view matrix, projection matrix, and viewport arguments to gluProject and gluUnProject are now optional.
  13. Added lots more extensions....