Dear Tcl'ers,

I'm pleased to announce version 0.9.3 of Tcl3D.


Tcl3D offers the 3D functionality of OpenGL and other 3D libraries
at the Tcl scripting level.
This is accomplished by wrapping the libraries with the help of SWIG.


The Tcl3D package consists of the following building blocks:  

Tcl3D core module:
- tcl3dOgl    Enhanced Togl widget, a Tk widget for OpenGL content.
              Wrapper for OpenGL functionality based on the GLEW library.
              Utility library (math, shapes, stop watch, ..).

Tcl3D optional modules:
- tcl3dSDL    Wrapper for the Simple DirectMedia Library.     
- tcl3dFTGL   Wrapper for the OpenGL Font Rendering Library.
- tcl3dGl2ps  Wrapper for the OpenGL To Postscript library.
- tcl3dOsg    Wrapper for the OpenSceneGraph library.
- tcl3dGauges A Tcl3D package for displaying gauges.

Tcl3D comes with lots of demo and test programs.


Tcl3D sources, binaries and demos are available at http://www.tcl3d.org/

Please send questions, bug reports or any other feedback about Tcl3D to 
<info at tcl3d dot org>, or visit the Tcl3D related pages on the Wiki:
    http://wiki.tcl.tk/15278 (Tcl3D)
    http://wiki.tcl.tk/16057 (Tcl3D Discussion)
    http://wiki.tcl.tk/17771 (Tcl3D Demo of the Month)


Regards,

Paul Obermeier



Version history:

Version 0.9.3, released 2018/05/01
Major rewrite and integration into BAWT build framework.

  - Enhancements / New features:
    + Tcl/Tk 8.6 now used as standard Tcl version. 
    + GLEW version updated to 1.11.0. OpenGL support now up to 4.5.
    + Gl2ps updated to version 1.4.0.
    + Added new sub-module tcl3dGeoMath providing geographic conversion routines.
    + Added source for application OglInfo.
    + New or enhanced utility functions:
      - tcl3dVectorToPhoto2: New function, which keeps track of the scanline order of the input vector.
      - tcl3dPhotoFromVector: New function to create a Tk photo image from a Tcl3D vector.
      - tcl3dReadImg: Added new optional parameter ignoreAlphaChannel.
      - tcl3dGetBooleanState: New function to query a boolean OpenGL state variable using glGetBooleanv.

  - Bug fixes:
    + Corrections in Togl needed for Tcl 8.6 related to Unicode handling.
    + Fixed function tcl3dOrtho.

  - New demos:
    + Added Tcl3D Demos of the month 01/2011 till 02/2012.

  - Build environment:
     TODO

Version 0.5.0, released 2010/12/31
Tcl/Tk updated to version 8.5 (using ttk and dicts).

  - Enhancements / New features:
    + Tcl/Tk 8.5.8 now used as standard Tcl version. 
      dicts and ttk are used in Tcl3D library and demos.
    + GLEW version updated to 1.5.7. OpenGL support now up to 4.1.
    + Incorporated features from Togl 2.0:
      - Use of Tcl_Obj instead of strings.
      - Code cleanup.
      - INCOMPATIBILITY: Reshape callback does not have width and height parameters
        anymore. Use the Togl width and height methods to get the widget's size.
    + Starpack related: 
      - Updated Img version to 1.4 SVN Revision 315.
    + GLUS shapes: glusCreatePlane, glusCreateCube, glusCreateSphere,
                   glusCreateTorus, glusDestroyShape.
        These functions return a dictionary containg the geometry in tcl3dVectors
        to be used in vertex array objects (VAO).
    + New utility functions:
      - Shader utility functions: tcl3dOglReadShaderFile, tcl3dOglBuildProgram, 
          tcl3dOglCompileProgram, tcl3dOglLinkProgram, tcl3dOglDestroyProgram.
      - tcl3dReadImg: Read an image and return a dictionary containing the image
          data in a tcl3dVector as well as additional image information
          (width, height, format, nchans).
      - tcl3dOglGetVersionNumber: Get OpenGL version as a dict.
      - tcl3dOglGetProfile: Get OpenGL profile information.
      - tcl3dAfterIdle: Workaround for resize problems on the Mac caused by
          the "after idle" command. 
      - tcl3dGetDirList: Utility function to get the contents of a directory.
      - tcl3dDirSelect: An enhanced ttk::Combobox widget for selecting
          directories or files.
      - tcl3dVectorEqual: Check two Tcl3D vectors for equality.
      - tcl3dCgResetError: Reset the Cg error condition.
      - New tcl3dVector member functions: setrgb, setrgba

  - Bug fixes:
    + Corrected tcl3dOglHaveVersion. 

  - New demos:
    + 4 new demos added since release 0.4.3.
      These have been previously released as Tcl3D Demo of the month.
    + New application: OpenGL Information Center.

  - Build environment:
    + Windows 7 64-bit       : VS 2008 Express (32-bit) (Tcl 8.5.8, SWIG 1.3.40)
    + SuSE Linux 11.2 32-bit : gcc 4.4.1                (Tcl 8.5.7, SWIG 1.3.36)
    + SuSE Linux 11.2 64-bit : gcc 4.4.1                (Tcl 8.5.7, SWIG 1.3.36)
    + OS X 10.6 (SnowLeopard): gcc 4.2.1 (32-bit)       (Tcl 8.5.8, SWIG 1.3.40)

Version 0.4.3, released 2010/07/31
Bug fix and maintenance release. Ready for OpenGL 4.0.

  - Enhancements / New features:
    + GLEW version updated to 1.5.4. OpenGL support now up to 3.3 and 4.0.
    + FTGL version updated to 2.1.3 RC5. Fixes problems with Non-Ascii characters.
    + SWIG version 1.3.40 tested for correct wrapping.
    + Added support for Visual Studio 2010.
    + New Makefile variable TKDIR for systems having Tcl and Tk
      in separate directories.
    + New utility functions:
      - tcl3dVecMath: All tcl3dVec3f* and tcl3dMatf* have corresponding double 
        precision functions: tcl3dVec3d* and tcl3dMatd*.
        New replacement functions for OpenGL functions operating on matrices, 
        which do not exist in OpenGL 3.2:
        tcl3dMultMatrixf, tcl3dMultMatrixd, tcl3dRotatef, tcl3dRotated,
        tcl3dScalef, tcl3dScaled, tc3dTranslatef, tcl3dTranslated.
      - tcl3dViewMath: tcl3dOrtho, tcl3dFrustum, tcl3dPerspective, tcl3dLookAt
        as replacement for the corresponding gl and glu functions.
      - New sub-command elemsize to determine the size in bytes of an 
        element of a tcl3dVector.
      - New functions tcl3dOglProject and tcl3dOglUnProject in addition to
        gluProject and gluUnProject using tcl3dVectors instead of Tcl lists.
    + New OpenGL information and query function: tcl3dOglGetExtensionList.
    + Enhanced OpenGL information and query functions:
        tcl3dOglGetFuncList,       tcl3dOglGetVersionList, tcl3dOglIsFuncWrapped,
        tcl3dOglGetFuncSignature,  tcl3dOglGetFuncVersion, tcl3dOglGetEnumVersion, 
        tcl3dOglGetFuncDeprecated, tcl3dOglGetUrl,         tcl3dOglGetVersionFuncs, 
        tcl3dOglGetVersionEnums.

  - Bug fixes:
    + Corrected wrapping of OpenGL enumerations.
      Some enumerations did not get wrapped.

  - New demos:
    + 5 new demos added since release 0.4.2.
      These have been previously released as Tcl3D Demo of the month.

  - Build environment:
    + Windows 7 64-bit                : VS 2008 Express (32-bit)
    + SuSE Linux 10.2 32-bit (2.6.18) : gcc 4.1.2
    + SuSE Linux 10.2 64-bit (2.6.18) : gcc 4.1.2
    + OS X 10.4 (Tiger)               : gcc 4.0.1
    + Tcl/Tk 8.4.18
    + SWIG 1.3.40


Version 0.4.2, released 2010/03/28
Bug fix and maintenance release. Ready for Tcl/Tk 8.6.

  - Enhancements / New features:
    + GLEW version updated to 1.5.3. OpenGL support now up to 3.2.
    + Cg version updated to 2.2.0017 (Cg 2.2 February 2010 release).
    + Gl2ps version updated to 1.3.5.
    + Starpack related: 
        - Added Tablelist version 4.12.
        - Updated Twapi version to 2.2.3.
        - Cg support for Darwin.
    + New utility functions: tcl3dOglGetGlewVersion, tcl3dCameraModel, tcl3dTeapotModel.
    + New OpenGL information and query functions:
        tcl3dOglGetVersionList, tcl3dOglIsFuncWrapped,   tcl3dOglGetFuncSignature,
        tcl3dOglGetFuncVersion, tcl3dOglGetEnumVersion,  tcl3dOglGetFuncDeprecated, 
        tcl3dOglGetUrl,         tcl3dOglGetVersionFuncs, tcl3dOglGetVersionEnums 

  - Bug fixes:
    + Corrected presentation framework to work with Tcl/Tk 8.6.

  - New demos:
    + New application: OpenGL GoogleMock Creator.
    + 7 new demos added since release 0.4.1.
      These have been previously released as Tcl3D Demo of the month.

  - Build environment:
    + Windows XP SP3                  : VS Express 2005 SP1
    + SuSE Linux 10.2 32-bit (2.6.18) : gcc 4.1.2
    + SuSE Linux 10.2 64-bit (2.6.18) : gcc 4.1.2
    + OS X 10.4 (Tiger)               : gcc 4.0.1
    + SGI IRIX 6.5.22                 : gcc 3.4.6 (Nekoware)


Version 0.4.1, released 2009/08/23
New module tcl3dOsg wrapping the OpenSceneGraph library.

  - Enhancements / New features:
    + New optional module tcl3dOsg, wrapping the OpenSceneGraph library.
      Wrapping is based on OpenSceneGraph version 2.8.2.
      Several demo and test programs showing the new functionality.
    + Support for Visual Studio 2008. 
    + Improved detection of OS and compiler in make files: To detect, if using
      a DOS console for compilation, the existence of environment variable
      VSINSTALLDIR is checked. This variable is also used to detect a .NET
      compiler (i.e. VS2005 or VS2008, which need manifests).
    + Corrected build files and support for MinGW.
    + SWIG version 1.3.38 tested for correct wrapping.
    + Cg version updated to 2.2.0006 (Cg 2.2 October 2009 release).
    + Gl2ps version updated to 1.3.3.
    + New utility functions: tcl3dOglSetMode, tcl3dOglSetNormalMode,
      tcl3dOglSetSafeMode, tcl3dOglSetDebugMode to switch between the
      3 OpenGL execution modes: Normal, Safe, Debug.
      Corresponding buttons added in the presentation framework.
    + New utility function: tcl3dVectorFromLinspace to create new linearly
      spaced Tcl3D Vector.
      Added test file vectorlinspace.tcl.
    + New utility functions: tcl3dOglFindFunc, tcl3dOglGetExtSuffixes to
      find an implemented OpenGL function from it's core name by searching
      all known extension names.
      Added test file findFuncs.tcl.
    + CAUTION: Incompatible changes, if used from the Tcl level.
      Replaced Int8, Float32, ... with corresponding GLbyte, GLfloat typedefs.
      Also changed function names accordingly.

  - Bug fixes:
    + Corrected bug in OpenGL wrapper createGlewSwigFile.tcl:
      glGetStringi was not wrapped.
    + Corrected bug in tcl3dUtilFractal.c: tcl3dFractalToPhoto had incorrect
      x and y scaling.

  - Removed features:
    + Support for Visual C++ 6.0 and CygWin deprecated.

  - New demos:
    + 7 new demos added since release 0.4.0.
      These have been previously released as Tcl3D Demo of the month.

  - Build environment:
    + Windows XP SP3                  : VS Express 2005 SP1
    + SuSE Linux 10.2 32-bit (2.6.18) : gcc 4.1.2
    + SuSE Linux 10.2 64-bit (2.6.18) : gcc 4.1.2
    + OS X 10.4 (Tiger)               : gcc 4.0.1
    + SGI IRIX 6.5.22                 : gcc 3.4.6 (Nekoware)


Version 0.4.0, released 2008/12/30
OpenGL wrapping now based on GLEW.

  - Enhancements / New features:
    + CAUTION: Possibly incompatible changes.
      OpenGL wrapping is now based on GLEW, because the previously used OglExt
      extension library is no longer supported.
      OpenGL version now supported is 3.0, based on GLEW version 1.5.1.
      No C++ dependency anymore in the core module.
    + No more initialization (tcl3dOglExtInit) of the extended OpenGL 
      functionality needed. This is done now when creating the Togl widget.
    + The old OpenGL extension library OglExt automatically detected, if 
      OpenGL functions are not implemented in the OpenGL driver, and did 
      nothing in that case. This had the disadvantage, that programs seem
      to run, but indeed were missing an extension function.
    + New OpenGL utility procedures: 
      tcl3dOglHaveFunc, tcl3dOglGetFuncList,
      tcl3dOglGetFuncSignatureList, tcl3dOglGetFuncVersionList.
    + CAUTION: Possibly incompatible change.
      Togl's command line parameter "-swapinterval" is set to zero by default, so
      that demos always run with maximum framerate, instead of being fixed to
      the display's refresh rate.
      Removed now obsolete "-swapinterval 0" statements in several demos.
    + Demo tcl3dInfo.tcl updated to display OpenGL version information, 
      function signature and availability of all wrapped OpenGL functions.
    + User and reference manuals updated.

  - Bug fixes:
    + GLEW has wrong glPointParameterfv* functions signatures:
      "float *" instead of "const float *" according to OpenGL standard.
      Changed in glew.h file.
    + tcl3dVecMath.c had incorrect tcl3dMatfRotate function.
      Thanks to Stefan Augustiniack for patch.

  - Removed features:
    + Removed obsolete versions 0.1 and 0.2 from Tcl3D homepage.
    + Removed compatibility function for version 0.1.
    + CAUTION: Possibly incompatible change.
      Removed wrapping of Windows specific OpenGL functions (wgl*).
      Operating system specific functions should only be used in the Togl code.

  - New demos:
    + 4 new demos added since release 0.3.3.
      These have been previously released as Tcl3D Demo of the month.

  - Build environment:
    + Windows XP SP3                  : VS Express 2005 SP1
    + SuSE Linux 10.2 32-bit (2.6.18) : gcc 4.1.2
    + SuSE Linux 10.2 64-bit (2.6.18) : gcc 4.1.2
    + OS X 10.4 (Tiger)               : gcc 4.0.1
    + SGI IRIX 6.5.22                 : gcc 3.4.6 (Nekoware)


Version 0.3.3, released 2008/09/14
Bug fix and maintenance release

  - Enhancements:
    + Enhanced documentation:
      Reference manual for Tcl3D specific functions.
      User manual updated and enhanced.
    + Added 64-bit Linux to the supported list of platforms.
    + Improved Mac OS X support:
      Fixed resize problems in presentation framework.
      Consistent mouse button behaviour across operating systems.
    + Trackball module supports multiple windows.
      CAUTION: Incompatible change. Additional Togl window parameter in
               procedures tcl3dTbAnimate, tcl3dTbInit, tcl3dTbMatrix.
      Thanks to Michael Magoga for this patch.
    + New OpenGL utility procedures:
      tcl3dOglGetIntState, tcl3dOglGetFloatState, tcl3dOglGetDoubleState.
      tcl3dOglGetMaxTextureSize, tcl3dOglGetMaxTextureUnits,
      tcl3dOglGetViewport, tcl3dOglGetShaderInfoLog, tcl3dOglGetProgramInfoLog, 
      tcl3dOglGetShaderSource, tcl3dOglShaderSource, tcl3dOglGetInfoLogARB.
    + New low-level routines for copying Tcl lists into a vector:
      tcl3dListToVector_TYPE
      Tcl utility procedure tcl3dVectorFromList updated to transparently use the
      new low-level routines.
    + Starpacks now allow drag-and-drop of TclKit files.
    + tcl3dGetExtFile not constrained to Starkits anymore.
      Thanks to Jean-Claude Gohard for supplying a vfs and zvfs enabled version.
    + New utility functions for random number generation (same algorithm at C
      and Tcl level).
  - Bug fixes:
    + Bug fix in tcl3dGauges: Eliminated bgerror procedures.
      Thanks to Alexandre Ferrieux and Synic for hints on this bug.
    + Several bug fixes in the presentation framework.
      Thanks to Philip Quaiffe for hints and other useful discussions.
    + Several other minor bug fixes.
  - New demos:
    + 19 new demos added since release 0.3.2.
      These have been previously released as Tcl3D Demo of the month.


Version 0.3.2, released 2007/02/25
Demo cleanup and first official Mac OS X support

  - Unification of demo applications and presentation framework.
  - New module tcl3dDemoUtil for C/C++ based utility functions needed by
    some of the demos for speed issues.
  - More NeHe tutorials added: Lessons 14, 22-24, 26, 28, 33, 36, 37, 41, 45-48.
  - Nine demos from www.GameProgrammer.org added.
  - Updated Tcl3D manual. Created separate demo overview document.
  - Added support to capture screenshots (Module tcl3dCapture).
  - Added new functionality to tcl3dUtil: ArcBall emulation.
  - Added windowing system specifics (SwapInterval, Multisampling) to the
    tcl3dTogl widget.
  - Added support for Visual Studio 2003 (7.1) and 2005 (8.0).
  - Enhanced tcl3dVector functionality.
    + Utility functions for manipulation of image data stored in tcl3dVectors:
        tcl3dVectorCopy, tcl3dVectorCopyChannel,
        tcl3dVectorManip, tcl3dVectorManipChannel
    + tcl3dVector member functions for content independent manipulation:
        setvec, addvec, mulvec
  - tcl3dOde now uses ODE version 0.7 and is available for Windows, Linux,
    Mac OS X and Irix. Wrapper still in alpha version and not complete.
  - tcl3dGl2ps now uses GL2PS version 1.3.2.
  - tcl3dCg now uses Cg version 1.5.0015.
    The 1.4 versions of Cg did not work with OS X on Intel platforms.


Version 0.3.1, released 2006/06/19
Starpack support for Tcl3D

  - Starpack version of Tcl3D, including demos and external libraries.
    First shown at TclEurope 2006.
  - New optional module tcl3dGl2ps, wrapping the OpenGL To Postscript library.
    (Thanks to Ian Gay for idea and first implementation)
  - New optional module tcl3dOde, wrapping the Open Dynamics Engine.
    Very alpha preview, Windows only !!!
  - More NeHe tutorials added: Lessons 19-21.


Version 0.3, released 2006/02/12
MacOS X and enhanced font support

  - Support for Mac OS X added.
    (Thanks to Daniel A. Steffen for supplying patches and binaries)
  - New optional module tcl3dFTGL, wrapping the OpenGL font rendering
    library FTGL, based on freetype fonts.
  - Corrected and enhanced font handling under Windows in the tcl3dTogl widget.
    No more private Tcl header files needed.
  - Added new font related demo programs:
    tcl3dFont.tcl, tcl3dToglFonts.tcl, ftglTest.tcl, ftglDemo.tcl.
  - Added new SDL demo related to CD-ROM handling: cdplayer.tcl
  - Added some of NeHe's OpenGL tutorials.
  - If an optional library is not installed, no error message is created.
    New procedures to check existence of optional modules:
    tcl3dHaveCg, tcl3dHaveSDL, tcl3dHaveFTGL.
  - Get information on Tcl3D subpackages with tcl3dGetPackageInfo 
    and tcl3dShowPackageInfo.
  - Information program tcl3dInfo.tcl enhanced to support commands
    and enums of SDL and FTGL modules.
  - Added new functionality to tcl3dUtil: Simple, scrollable Tk widgets
    for demo programs, trackball emulation (used in FTGLdemo.tcl).
  - Added new functionality to tcl3dUtil:
    tcl3dVectorFromByteArray, tcl3dVectorToByteArray.
    Convert Tcl binary strings to tcl3dVectors and vice versa 
    (see demo bytearray.tcl).
  - Bug fix in OglExt wrapping: Parameters of type "float *"
    and "double *" were wrapped incorrectly.


Version 0.2, released 2006/01/07
Major rewrite of TclOgl

  - Major rewrite and inclusion of several new 3D libraries:
      + OpenGL 2.0 and extensions
      + NVidia's Cg library
      + SDL, the Simple Direct Media Library
      + 4 gauge widgets (Thanks to Victor G. Bonilla for supplying this library)
      + Utility library
  - Renamed from TclOgl to Tcl3D
  - Created domain tcl3d.org


Version 0.1, released 2005/05/29
Initial version

  - First version (called TclOgl) introduced at the Tcl Europe 2005
    conference.
  - Supported features include basic OpenGL wrapping.
