CHANGES
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:39k
源码类别:

GIS编程

开发平台:

Visual C++

  1. GLUT Change Log
  2. ================
  3. NOTE:  This document is potentially incomplete.
  4. GLUT 3.7 -> 3.7.1
  5. ------------------
  6.   o  Added a default icon for glut windows (Win32 only).
  7.   o  Added workspace and project files for compiling with
  8.      Microsoft Visual Studio (6 or greater).
  9.   o  Updated some of the demo programs.
  10. GLUT 3.6 -> 3.7
  11. ----------------
  12.   o  Added to <GL/glut.h> the ability to automatically link with
  13.      the necessary GLUT and OpenGL libraries.  Define GLUT_NO_LIB_PRAGMA
  14.      to disable this (you need to disable this when compiling the
  15.      library itself).  Define GLUT_USE_SGI_OPENGL for auto library
  16.      linking with the SGI OpenGL for Windows libraries.  Define
  17.      GLUT_NO_WARNINGS_DISABLE to avoid warnings that GLUT programs
  18.      typically want to suppress.
  19.   o  Port of IRIS GL newave "wave physics" demo by Erik Larsen
  20.      (cayman@sprintmail.com).  Look in progs/demos/newave
  21.   o  The glutSolidTeapot and glutWireTeapot do not tesselate as
  22.      finely as in previous releases.  Expect the teapot to render
  23.      much faster as of GLUT 3.7.
  24.   o  The lib/*/Imakefile files have been updated to make it easier
  25.      to build shared/debug/profiling versions of the various GLUT
  26.      libraries.  See Question 44 in the "FAQ.glut" files for
  27.      more details.
  28.   o  Fix progs/advanced/textext example to work on little-endian machines.
  29.   o  Fixed a performance bug in progs/advanced/rts.c that eliminates
  30.      one full shadow volume rendering pass.  If you have the silhouette
  31.      shadow volume geometry, you can use GL_INVERT and draw the shadow
  32.      volume with a single pass with both front & back faces enabled
  33.      instead of two distinct passes for front and back as would be
  34.      needed if GL_INCR/GL_DECR were used.  Also fixed the near and
  35.      far clipping planes for better depth precision with 16-bit
  36.      depth bufffers.
  37.   o  Improve the efficiency of Win32's wglMakeCurrent calls.  It
  38.      turns out that Microsoft does not "short circuit" a redundant
  39.      wglMakeCurrent (ie, if you make current to the same context
  40.      and same DC you are already bound to, it is not a no-up).
  41.      Now, GLUT uses wglGetCurrentContext and wglGetCurrentDC to
  42.      determine when not to redundantly call wglMakeCurrent.
  43.      This also reduced the calling of GetDC within Win32 GLUT.
  44.      Note that the GLX version still assumes that a redundant
  45.      glXMakeCurrent is short circuited.
  46.   o  Call glutDestroyWindow (and glutLeaveGameMode) destroys the
  47.      window (or game mode window) before returning.  Previously,
  48.      the X11 implementation didn't do an explicit flush so the
  49.      window could still be on the screen after glutDestroyWindow
  50.      (or glutLeaveGameMode) returned.  The Win32 behavior was
  51.      corret in GLUT 3.6.
  52.   o  Work around Microsoft's bug where atexit callbacks are not
  53.      called if exit is called from within a DLL.  I had to add new
  54.      routines glutCreateWindowWITHEXIT, glutCreateMenuWITHEXIT,
  55.      and glutInitWITHEXIT that pass in the exit routine's function
  56.      pointer so GLUT can call this routine and exit with the
  57.      atexit callbacks called correctly.
  58.   o  Added lib/glsmap library for dynamic real-time sphere mapping.
  59.      See the demos in progs/spheremap/glsmap
  60.      Builds for N32, O32, and N64 for IRIX.
  61.      rtsmap has an environment reflected in a sphere, teapot, or
  62.      icosahedron (8 passes).  Very cool.  fakeraytrace goes one
  63.      step further and has two reflective objects, then does an
  64.      extra recursive pass so that one of the spheres is actually
  65.      reflecting the reflection in the other sphere.  Wow.
  66.   o  Man pages updated.
  67.      Version number in man pages changed to 3.7.
  68.      My email address changed to mjk@nvidia.com
  69.      New man pages:
  70.        glutEnterGameMode
  71.        glutForceJoystickFunc
  72.        glutGameModeGet
  73.        glutGameModeString
  74.        glutIgnoreKeyRepeat
  75.        glutJoystickFunc
  76.        glutKeyboardUpFunc
  77.        glutSetKeyRepeat
  78.        glutSpecialUpFunc
  79.      Updated man pages:
  80.        glutDeviceGet
  81.        glutGet
  82.        glutSolidTeapot
  83.   o  Updated the ./linux/* files for GLUT 3.7.
  84.   o  The GLUT library should compile with a C++ compiler now.  I make
  85.      no promises that the entirety of GLUT can compile with a C++
  86.      compiler though.  Brian Paul wanted this for Mesa which does
  87.      expect to build with a C++ compiler.  Christoph M. Hoffmann
  88.      <cmh@cs.purdue.edu> brought up this issue.
  89.   o  Added proto dynamic sphere mapping programs in
  90.      progs/spheremap/hacks to help you understand the steps in
  91.      making a dynamic sphere map.
  92.   o  Added program demonstrating window space texture coordinate
  93.      generation at progs/advanced/texwinalign.c; demonstrates how
  94.      texture matrix can be be used to generated texture coordinates
  95.      in window space.
  96.   o  The -iconic command line option works for Win32 GLUT programs
  97.      now.  The new test28 actually tests the -iconic command line option.
  98.   o  Added the glutGameModeString, glutEnterGameMode, glutLeaveGameMode,
  99.      and glutGameModeGet calls for "full screen" game mode display
  100.      change switching.  Only the Win32 implementation really does
  101.      display mode changes.  See lib/glut/glut_gamemode.c
  102.   o  Several demos added a -fullscreen option to use the new GLUT
  103.      game mode functionality.  I generally also fixed these to
  104.      match the window aspect ratio.  Examples:  underwater, txfdemo
  105.   o  Sort of fixed how WM_ACTIVATE messages get processed in the
  106.      Win32 GLUT implementation.
  107.   o  Moved the Win32 WinProc function out of win32_util.c into
  108.      its own win32_winproc.c file.
  109.   o  Building the GLUT library debug for Win32 works now (changes
  110.      to the Makefile.win setup).
  111.   o  Added a poor man's stereo example by Walter Vannini
  112.      (walterv@jps.net, waltervannini@hotmail.com).  The idea
  113.      is to draw the left eye in red and right eye in blue
  114.      and use cheap red/blue filter stereo glasses to see
  115.      the stereo separation.  See progs/advanced/redblue_stereo.c
  116.   o  Improve GLUT static library implementation.  Now if you don't
  117.      use the GLUT menu API, you don't get this code included in your
  118.      binary.  Reduces GLUT program text size by 25% for such non-menu
  119.      GLUT programs.
  120.   o  Add gleGetNumSlices and gleSetNumSlices entry points to control
  121.      the tessellation level (previously, always a constant 20).
  122.   o  Improved dependencies in SGI Makefiles in lib/*/Makefile.sgi
  123.   o  Added progs/gle/martini.c example.  Spinning martini glass.
  124.   o  Should work on VMS 7.0.  Changes suggested by Jouk Jansen
  125.      (joukj@crys.chem.uva.nl).  Mainly changes to GLUT library itself
  126.      to deal with VMS 7.0's POSIX-compliant support for gettimeofday.
  127.   o  Added GLUT version of "skyfly" terrain fly over demo.  See
  128.      progs/demos/skyfly
  129.   o  Update of GLUT frequently asked questions.  See FAQ.glut
  130.   o  Added workaround to real-time shadow demos so they work on old
  131.      (pre-IRIX 6.5) Octane and Impact systems.  The work around makes
  132.      sure the feedback buffer is always at least 2048 entries big to
  133.      force use of software feedback.  See progs/advanced/rts.c and
  134.      progs/advanced/shadowfun.c
  135.   o  Add work-around in hello2rts for Riva 128 and 128 ZX to make
  136.      hello2rts start by default with the stencil invariant hack
  137.      enabled.  This makes sure that hello2rts use the software
  138.      rasterizer for all rendering so the shadows look right.  Other
  139.      platforms may need this support.  There is a menu option to
  140.      flip it on if need be.
  141.   o  Added a "win32pfd" (Win32 Pixel Format Descriptor) capability
  142.      name for the Win32 version of GLUT's glutInitDisplayString
  143.      parser.  This lets you select a specific pixel format descriptor,
  144.      much as "xvisual" allows one to do with X11.  This is intended
  145.      to facilitate benchmark construction with GLUT where particular
  146.      PFDs can be selected for benchmarking or testing.  Also documented
  147.      on glutInitDisplayString man page.  Win32 GLUT only.
  148.   o  Add glutGet(GLUT_WINDOW_FORMAT_ID) to return the window system
  149.      dependent window format ID (Visual ID for X11; Pixel Format
  150.      Descriptor Number for Win32).  This should help people be able
  151.      to report bugs and now precisely what format ID they are
  152.      testing and/or benchmarking.  Note that these values can change
  153.      between X servers, hardware, and OpenGL implementations.
  154.   o  Fix glutGet(GLUT_WINDOW_COLORMAP_SIZE) bug in X11 GLUT
  155.      implementation.  The routine now correctly returns the colormap
  156.      size of the current layer (previously it returned the size
  157.      of the normal layer which was a totally bogus value for an
  158.      RGBA normal layer).
  159.   o  Fixed SEE ALSO section of glutDeviceGet man page.
  160.   o  glutInitDisplayString now knows how to use the SGIX_fbconfig
  161.      extension to access 16-bit StaticGray luminance visuals.
  162.      These high-resolution luminance (1 component) visuals are
  163.      excellent for medical imaging applications that need the
  164.      16 bits per pixel resolution.
  165.      To get a luminance window, do:
  166. glutInitDisplayString("luminance");
  167.      Note that few systems actually support 16-bit luminance visuals.
  168.      InfiniteReality does.  I'm not aware of any other systems that
  169.      do.
  170.   o  Added missing GLUT entry points to the GLUT Ada binding
  171.      and interface files.
  172.   o  Added progs/demos/sysview, an IRIX operating system 3D
  173.      monitor.  Only compiles on SGI machines, though it could
  174.      easily be adapted to other operating systems.  Courtesy
  175.      of Javier Velasco <fjvelasco@sfe.indra.es>.
  176.   o  Win32 GLUT didn't generate keyboard callback for Delete key
  177.      (ascii 127) before; now it does.
  178.  
  179.   o  Fix warning in glut_input.c when compiling on Alpha due
  180.      to XInput extension API snafu.  Pointed out by Tom Holroyd
  181.      <tomh@taz.ccs.fau.edu> compiling on a Linux Alpha machine.
  182.   o  Fixed bug reported by Rune Hasvold <runeh@ifi.uio.no> in
  183.      win32_glx.c where Win32 GLUT was always requesting a 1
  184.      bit depth buffer at least.  Now, GLUT requests zero bits
  185.      of DEPTH unless you request a depth buffer.  Apparently
  186.      this bug was fixed in the Mesa version of GLUT a while
  187.      back, but didn't get to my GLUT source until now.
  188. GLUT 3.5 -> 3.6
  189. ----------------
  190.   o  The GLUT .zip file now has "Makefile" be a copy of "Makefile.win"
  191.      instead of "Makefile.sgi".  This makes it easier for Win32 GLUT
  192.      users to just do an "nmake" to build GLUT.
  193.   o  Updated various README files for GLUT 3.6.
  194.   o  Update GLUT man page revs to say 3.6.
  195.   o  Fixed bug in Win32 accumulation buffer allocation code.  Thanks to
  196.      Nate and Layne Christensen <lchriste@es.com>.
  197.   o  Fix bug in Win32 GLUT where pushing/popping a subwindow would
  198.      also reposition the window to its parent's origin.  Now, push/pop
  199.      operations do not disturb the window position.
  200.   o  Fix all VC++ Win32 warnings and improve the GLUT.DLL speed
  201.      and size by macro'izing Xlib routines and eliminating X11-only
  202.      functionality from the Win32 version of the library.
  203.   o  Fixed various bugs in Win32 GLUT menu handling.  The glutChange*
  204.      and glutRemoveMenuItem routines should work pretty well now.
  205.   o  Fix Win32 GLUT bug where a reshape did not properly result in
  206.      repair-damage, ie. glutLayerGet(GLUT_NORMAL_DAMAGED) didn't work
  207.      right in GLUT 3.5.
  208.   o  The "walker" demo's win32_dirent.h code got update to read directory
  209.      correctly for Windows 95 (does Win32 FindFirstFile on "." operate
  210.      differently from Windows NT?  It seems like "*" works the way "."
  211.      should.)
  212.   o  X11 GLUT now detects when you set up an infinite loop due to
  213.      recursive submenu nesting.  In previous GLUT implementations,
  214.      this could lead to an infinite loop with the X server grabbed;
  215.      now it leads to a GLUT fatal error.
  216.      
  217.   o  GLUT now exits with a fatal error if glXCreateContext (or
  218.      wglCreateContext) fails instead of crashing.
  219.   o  Win32 "make test" infrastructure in place.
  220.   o  Ideas in Motion demo builds better now.
  221.   o  Substantially improve the performance of glutSolidTorus and
  222.      glutWireTorus by using quad strips instead of independent quads.
  223.      Also, generally made the looping more efficient.  Thanks to
  224.      Emmanuel Maa BERRIET (eberriet@sky.fr) for pointing out the
  225.      inefficiencies.
  226.   o  Include Linas Vepstas's GLE library with GLUT (based on GLE 2.2.6).
  227.      Includes man pages at man/gle and examples at progs/gle
  228.   
  229.      The GLE Tubing and Extrusion Library is a graphics application
  230.      programming interface (API). The library consists of a number of
  231.      "C" language subroutines for drawing tubing and extrusions.
  232.      Several bugs in GLE 2.2.6 are fixed here, particularly to make
  233.      GLE work well under Win32.
  234.   o  Fixed bugs in MUI so that it can support multiple user interface
  235.      windows.  Added muiAttachUIList to associate a UI list with a GLUT
  236.      window.
  237.   o  More MUI enchancements to allow "disabled" greyed-out UI elements
  238.      courtesy of Tom Davis.
  239.   o  gliq, a pegboard game of IQ by Kiri Wagstaff, is at progs/demos/gliq
  240.   o  Add Nate Robin's port of the IRIS GL bounce program to OpenGL; see
  241.      progs/demos/bounce (includes a slider GUI element).
  242.   o  Add Nate Robin's "smooth" 3D object viewer without automatic nice
  243.      normal generation.
  244.   o  glflare, an OpenGL version of the D3D flare idea by Stephen Coy of
  245.      Microsoft.  See progs/demos/glflare
  246.   o  Resolve gcc warnings (picky, picky) in lib/glut.  This includes
  247.      not relying on the libc having strdup (not required by ANSI C or
  248.      POSIX).
  249.   o  Fix array bound overflow bug in progs/examples/stars.c
  250.   o  Handle fopen failure in progs/texfont/gentexfont.c
  251.   o  Add many more Ada GLUT examples; see progs/ada
  252.   o  Support X11R6's XK_KP_* keysyms for the keypad.  Previously,
  253.      the Home,Left,Right,etc keys on the numeric keypad (when num lock
  254.      is off) got ignored.  Now they should work.  Thanks to Paul
  255.      Henning (phenning@cs.uiowa.edu) for pointing out this problem.
  256.   o  It is now possible to catch a Unix signal in a signal handler and
  257.      add a glutIdleFunc and know that the GLUT main loop will
  258.      immediately drop out of waiting for the event and call the idle
  259.      callback.  This makes it possible to reliably respond to signals
  260.      from within a GLUT program.  (Just on Unix systems, not Win32.)
  261.   o  Added progs/demos/lorenz, Lorenz Attractor Demo.
  262.   o  Added progs/examples/editgrid.c
  263.   o  Improved progs/mesademos/texobj.c
  264.   o  Fixed progs/redbook/surface.c to request a depth buffer.
  265.   o  Added progs/advanced/pointburst.c demonstrating a particle system.
  266.   o  Added progs/advanced/sgiflag.c demonstrating dynamic real-time
  267.      NURBS trimming.
  268.   o  progs/advanced/envmap.c supports OpenGL 1.1 now.
  269.   o  Fix GLUT library compilation problem on DEC Unix 4.0 on Alpha
  270.      machines reported by Ray S. Babcock (babcock@cs.montana.edu).
  271.      See glut_dstr.c
  272.   o  Fix single buffered GLUT programs that needed to be calling
  273.      glFlush at the end of the frame.  Reported by
  274.      fossum@austin.ibm.com (Gordon C. Fossum).
  275.   o  Fix Fortran build error under IRIX 6.5 (use sed instead of grep).
  276.   o  Use "-Wl,-ignore_unresolved" SGI linker option to get around
  277.      problems in buggy SGI OpenGL Fortran bindings having extension
  278.      routines that are not implemented in the supplied OpenGL.
  279.   o  Added Brian Paul's marvelous Blue Pony demo in demos/bluepony
  280.      I had requested a Blue Pony from SIGGRAPH as one of my "special
  281.      needs" for our SIGGRAPH '97 "OpenGL and Window System Integration"
  282.      course.  Brian came through with this virtual Blue Pony.  Thanks,
  283.      Brian!
  284.   o  Fixed a problem in test/glut/bigtest.c where if it ran too
  285.      long, it would stop rotation due to numeric problems.
  286.   o  Make new glut_swap.c and glut_cmap.c files to help keep
  287.      glutSwapWindow and the color index GLUT entrypoints out of
  288.      statically linked GLUT programs that do not use these routines.
  289.   o  Fix many warnings.
  290. GLUT 3.4 -> 3.5
  291. ----------------
  292.   o  Henk Kok (kok@wins.uva.nl) contributes another cool demo.  See
  293.      progs/demos/opengl_logo
  294.   o  README.win32 now named README.win
  295.   o  Add the MUI (micro-UI) library developed for GLUT experimentally
  296.      based on SGI's Showcase user interface library.  This code was
  297.      developed by Tom Davis (davis@sgi.com).
  298.   o  The test directory now has subdirectories.  test/glut has
  299.      all the previous GLUT API tests.
  300.   o  Added menus to progs/advanced/projtex.c
  301.   o  Added tiffsift.c showing how to do "sifting" texture distortions
  302.      with OpenGL's third texture coordinate.
  303.   o  Improve lib/glut/glut_menu.c by having the code check if the
  304.      default visual is in the overlay so that it will get chosen
  305.      as the pop-up menu visual to minimize colormap flashing.
  306.      Suggested by Thomas Roell (thomas@xig.com).
  307.   o  Fix bug in glutStrokeLength and glutBitmapLength reported by Tom
  308.      Carroll <carroll@fp.com>.
  309.   o  Added shadowfun.c, boundary.c, hello2rts.c and rts.c as
  310.      examples of how to do fancy stenciled shadow volumes.  See
  311.      the progs/advanced subdirectory.
  312.   o  Now man pages get installed with "glut" suffix.  Should avoid
  313.      situations where GLUT's intro.3 clobber's systems intro.3
  314.      because GLUT should now install intro.3glut
  315.   o  Changes to Glut.cf for Digital Unix (Alpha) suggested by
  316.      Dr Andrej Panjkov (A.Panjkov@latrobe.edu.au).
  317.   o  Added demos/chess and demos/rollercoaster demos written by
  318.      Henk Kok (kok@wins.uva.nl).  Very nice.
  319.   o  Michael Gold's "rasterization only" demo uses OpenGL as just
  320.      a rasterization interfaces.  See progs/advanced/rasonly.c
  321.   o  progs/demos/underwater shows OpenGL-based rendering of underwater
  322.      caustics effects.  Very cool!
  323.   o  Added progs/perf_harness directory with an example of how
  324.      to create an application specific GLUT-based OpenGL benchmark.
  325.   o  Remove lib/glut/cannotate.c from distribution (no one should care).
  326.   o  Portability improvements throughout, particularly to Win32.
  327. GLUT 3.3 -> 3.4
  328. ----------------
  329.   o  Add glutStrokeLength and glutBitmapLength calls to glut.h
  330.      (previously undocumented).  Will be documented part of GLUT 4
  331.      API.
  332.   o  Added man discussion of glutStrokeLength, glutBitmapLength,
  333.      and glutWarpPointer.
  334.   o  Used ANSI C "const" keyword in glut API and implementation
  335.      as appropriate (this helped make Ada binding generation
  336.      easier).
  337.   o  README.win32 added; this is from Nate Robins's GLUT 3.3
  338.      Win32 distribution.
  339.   o  SGI Makefiles use $(TOP)/glutdefs for shared GLUT-related
  340.      macros.
  341.   o  Add workaround for Microsoft's OpenGL 1.1 implementation.
  342.      MS OpenGL 1.1 does not advance the raster position by the
  343.      xoffset and yoffset of glBitmap if the specified bitmap
  344.      has a width or height of zero (it is just a no-op); this is
  345.      not what OpenGL specifies.  I've fixed the GLUT bitmap fonts
  346.      to not use null bitmaps #ifdef WIN32 and instead use a 1x1
  347.      bitmap with not bit set.  capturexfont.c has been changed to
  348.      generate code with the #ifdef WIN32 workaround.
  349.   o  Fix bug in -geometry handling for negative window positions.
  350.      Now "-geometry 400x500-23-34" does not crash GLUT programs.
  351.   o  Makefile support for SGI machines so that you can set your
  352.      OBJECT_STYLE environment variable to one of SGI's various ABIs
  353.      and ISAs.  This can let you compile GLUT fully 64-bit with
  354.      R10K instructions or mereley old 32-bit ABI.  For example,
  355.      to compile N32 with only R4K instructions, do a
  356.      "setenv OBJECT_STYLE N32_M3".
  357.   o  Put header files in include/GL instead of GL - this would make
  358.      it esier to support other libraries within the GLUT distribution
  359.      (possibly libtiff) that wouldn't want a header to be in the GL
  360.      subdirectory.
  361.   o  Add GLUT 4 glutReportErrors entry point.
  362.   o  New cool game-oriented rendering demos: dinoreflect.c dinoshade.c
  363.      and halomagic.c
  364.   o  Support HP's Color Recovery System since Mesa uses it.
  365.   o  Add the libtiff examples in progs/tiff:  showtiff, writetiff,
  366.      and textiff
  367.   o  Add the new OpenGL Programming Guide 2nd Edition examples to the
  368.      GLUT distribution.
  369.   o  added progs/mesademos/trdemo.c - Brian Paul's tiled rendering demo.
  370.   o  added progs/demos/geoface - facial animation demo.
  371.   o  no long export internal symbols in libglut that should have been static.
  372.      See lib/glut/Makefile.sgi's "make symcheck" rule.
  373.   o  glutInitDisplayString implemented.  See test23.  Also works automatically
  374.      with Mesa.
  375.   o  Added popup menu overlay color cell allocation logic for Sun's
  376.      Creator hardware.  See test24.
  377.   o  Enhanced tests and fixed messages in a few places.
  378. GLUT 3.2 -> 3.3
  379. ----------------
  380.   o  The SGI Makefiles always build O32 executables.  In IRIX 6.4, the
  381.      default executable type changes to N32; to avoid Makefile
  382.      sommersaults, we just keep use at O32.
  383.   o  Get rid of all the __glutFatalError calls in the GLUT test suite.
  384.      Naughty to be using a GLUT internal function.
  385.   o  Introduced some new entry points that will be part of the official
  386.      GLUT 4 API when it is finalized for video resize & window status.
  387.      The video resize API is useful for hardware with full screen
  388.      video resize (ie, InfiniteReality).  The window status callback
  389.      extends the information of the previous visibility callback to
  390.      tell you when the window is fully vs. partially visible and
  391.      when the window is hidden vs. fully obscured.  GUIs typically want
  392.      to know when a window gets unmapped; programs that rely on a
  393.      fully unobscured frame buffer (such as histogram occlusion culling)
  394.      need to know when the window is fully visisble.
  395.   o  progs/advanced/occlude.c demonstrates a histogram based occlusion
  396.      culling technique.  It requires support of the histogram extension
  397.      and works best on a machine like RealityEngine.
  398.   
  399.   o  glutSolidCube and glutWireCube efficiency improved.
  400.  
  401.   o  Added progs/examples/cube.c - simple demo to draw a 3D cube.
  402.   o  Fixed warning message from glutSetWindow.
  403.   
  404.   o  glutFullScreen called on a window before it is mapped now
  405.      properly overrides the WM_NORMAL_HINTS to ensure that the window
  406.      is positioned at 0,0 (ie, no random or interactive placement
  407.      by the window manager).
  408.   o  For IRIX 6.3 and IRIX 6.4, eliminate X server routine trips for
  409.      interning atoms using SGI's fast atoms optimization.
  410.   o  Added a GLUT introduction man page.  Either "man glut" or "man intro".
  411.   o  Previously, timer callbacks could be starved by continous X
  412.      events.  Now, timer callbacks and X event processing are handled
  413.      at the same priority.  test/timer_test.c helps verify the improved
  414.      behavior.
  415.   o  Add IAFA for submitting GLUT to sunsite.unc.edu for anonymous
  416.      ftp; based on Mesa version.
  417.   o  SGI Makefiles work with MIPS 7.10 compilers now.
  418.   o  Fixed more warnings.
  419.   o  advanced: Fixed overlay bug in zcomposite.
  420.   o  demos: Fixed OpenGL bug in glutmech.
  421.   o  demos: Fixed atlantis to have a more reasonable near/far range for
  422.      machines with limited depth buffer resolution (<=16 bits).
  423.   o  Improved comments in places.
  424.   o  libglut: Fixed message if Motif atom intern'ing failed for fullscreen.
  425. GLUT 3.1 -> 3.2
  426. ----------------
  427.   o  Complete Unix-style nroff man pages for all the GLUT library
  428.      routines.  See README.man for details.
  429.   o  Implement the MESA_SWAP_HACK.  If you set the MESA_SWAP_HACK
  430.      enviornment variable and you are using Mesa, GLUT will attempt
  431.      to simply do a glXSwapBuffers to repair damage to a double
  432.      buffered GLUT window that appears to have been last displayed
  433.      using a glutSwapBuffers call.  This can *greatly* improve the
  434.      redraw performance of GLUT programs running under Mesa when
  435.      they are damaged (for example by popup menus that are not in
  436.      the overlays).  See lib/glut/glut_mesa.c  This idea was suggested
  437.      by Brian Paul on the Mesa mailing list.
  438.      Note that some poorly behaved (probably buggy, actually) GLUT
  439.      programs may no redraw correctly with MESA_SWAP_HACK.  The
  440.      optimization relies upon your display callback being idempotent
  441.      and that the window is not otherwise rendered to by other
  442.      callback routines.
  443.   o  Port Brian Paul's various Mesa 2.0 demo programs to use
  444.      GLUT: bounce, gamma, gears, isosurf, offset, reflect,
  445.      spin, tess_demo, texobj, & winpos.  The reflect program
  446.      is definitely worth checking out.
  447.   o  Include GLUT examples presented by Tom McReynolds and
  448.      David Blythe at the "Advanced OpenGL Rendering" course at
  449.      SIGGRAPH '96.
  450.   o  Add progs/examples/simple.c showing how to simply draw
  451.      a single triangle with OpenGL.  How long would an equivalent
  452.      Direct3D immediate program be?  Much longer...
  453.   o  Screen door transparency example using polygon stippling
  454.      based on code from Tim Hall.  progs/examples/screendoor.c
  455.   o  Fix bug where glutRemoveMenuItem about recalculating
  456.      the menu's width in pixel that would sometimes cause an
  457.      X protocol error.
  458.   o  Make sure that when a popup menu is finished that if the
  459.      initiating window has an overlay, the overlay colormap
  460.      is installed.  An overlay popup menu could otherwise knock
  461.      out the window's overlay colormap.
  462.   o  Fix an "off by one" error in the window number printed out
  463.      in a fatal error message when a redisplay is generated on
  464.      a window without a display callback.
  465.   o  Make consistent puncutation in some fatal error messages.
  466.   o  Some work to make example programs easier to build on
  467.      Windows NT and 95 (probably not complete; report bugs
  468.      please).
  469. GLUT 3.0 -> 3.1
  470. ----------------
  471.   o  The various shape rendering routines use single
  472.      precision instead of double precision.
  473.   o  The box shape rendering routines don't generate
  474.      redundant normals.
  475.   o  Make glutExtensionSupported more robust.
  476.   o  Added test20 for glutExtensionSupported.
  477.   o  Fixed Makefile in /usr/share/src/GLUT images.
  478.   o  Fixed multisample complication bug in dinospin.c
  479.   o  Fixed multiple includes in moth.c
  480.   o  Add contribed steam.c and glutmech demos (cool!).
  481.   o  Added fontdemo and evaltest in progs/examples.
  482.   o  Fix an HP/UX compilation problem with libglut.a
  483.   o  Fix GETTIMEOFDAY macro to take two args on a Sun.  Why does
  484.      Sun claim to be SVR4 when they have a BSD (2 parameter
  485.      gettimeoday)?
  486.   o  Add an #ifdef to glut_win.c for working around Solaris
  487.      2.4 and 2.5 bug in XmuLookupStandardColormap.
  488. GLUT 2.3 -> 3.0
  489. ----------------
  490.   o  Major version change so GLUT 3.0 does have API additions!
  491.   o  Added yacme (yet another colormap editor) demo by Patrick Bouchaud
  492.      (SGI Switzerland).
  493.   o  Updated glut.h so that GLUT_XLIB_IMPLEMENTATION=5 for 3.0
  494.      and GLUT_API_VERSION=3 for 3.0.
  495.   o  Change all the sample programs to _not_ #include <GL/gl.h> or
  496.      <GL/glu.h>.  From the spec:  "Because a very large window system
  497.      software vendor (who will remain nameless) has an apparent
  498.      inability to appreciate that OpenGL's API is independent of their
  499.      window system API, portable ANSI C GLUT programs should not
  500.      directly include <GL/gl.h> or <GL/glu.h>.  Instead, ANSI C GLUT
  501.      programs should rely on <GL/glut.h> to include the necessary
  502.      OpenGL and GLU related header files."  Sigh.
  503.   o  New Helvetica fonts: 10, 12, and 18 point versions.
  504.      GLUT_BITMAP_HELVETICA_10, GLUT_BITMAP_HELVETICA_12, and
  505.      GLUT_BITMAP_HELVETICA_18.
  506.   o  Implement glutFullScreen.
  507.   o  Implement glutSetCursor.
  508.   o  Implement glutGetModifiers.
  509.   o  Implement glutBitmapWidth and glutStrokeWidth.
  510.   o  Reimplement test2 to use glutGet(GLUT_ELAPSED_TIME) instead of
  511.      the less than portable gettimeofday.
  512.   o  Ripped out all the support for compiling earlier GLUT API
  513.      versions.  It got very ugly and hard to maintain.
  514.   o  Added GLUT_LUMINANCE to GLUT verison 3 API and documented it, but
  515.      it is not implemented as part of GLUT 3.0; should be in 3.1.
  516.   o  Added OpenVMS support to GLUT library with much help from Andy Vesper.
  517.   o  The display mode mask parameter for glutInitDisplayMode and the
  518.      milliseconds parameter for glutTimerFunc are now of type unsigned
  519.      int (previously unsigned long).
  520.   o  glutMenuStatus obsoletes glutMenuState.  The callback registered
  521.      by glutMenuStatus is triggered just like glutMenuState, except
  522.      that an additional two parameters pass the X and Y location of the
  523.      mouse when the menu status changes.  This is to remedy problems a
  524.      GLUT program using glutPassiveMotion might have re-sync'ing with
  525.      the mouse position after menu use.
  526.   o  In previous releases of GLUT, various user input events were
  527.      discarded when menus were in use.  Now, these callbacks are
  528.      generated.  If the effect of the events should be performed after
  529.      the menu is released, it is up to the GLUT program to delay the
  530.      action.
  531.   o  Careful to ignore Enter/LeaveNotify events that come
  532.      from the pop-up window pointer grab and ungrab (ie,
  533.      Enter/LeaveNotify events not marked NotifyNormal for their mode.
  534.      Eliminates "spurious" entry events.
  535.   o  Fixed bug with new work (like subwindow creation is a display callback)
  536.      not being placed on the work queue and getting lost.
  537.   o  Fix memory corruption bug in caching of values returned by
  538.      glXChooseVisual; no longer cache.
  539.   o  Fixed bug with glutCopyColormap sometimes not accurately
  540.      re-establishing the WM_COLORMAP_WINDOWS property.
  541.   o  Fixed bug in deliver of enter and left callbacks.  Before "virtual"
  542.      enter and leave (X protocol teminology) were being reported.  The
  543.      semantic for the entry callback is it is entering and leaving
  544.      a GLUT windows real estate that counts; not passing through
  545.      the window hiearchy.
  546.   o  Add XFlush to __glutFinishMenu in case menu call back will want to
  547.      read from a terminal window.  In this case, the X server may still
  548.      be grabbed since the XUngrabPointer hasn't been flushed out of
  549.      Xlib's buffers to the X server for processing (deadlock!).
  550.   o  Don't allow modification of menus while in use.  Spec ammended to
  551.      say "It is illegal to create or destroy menus or change, add, or
  552.      remove menu items while a menu (and any cascaded sub-menus) are in
  553.      use (i.e., popped up)." Allowing modifications of menus while in
  554.      use was dubious, the semantics would be unclear, and even more
  555.      unfortunate, might vary from system to system.
  556.   o  Spec warns that you should not call routines that require a current
  557.      window or menu when there is not a current window or menu (like
  558.      before you create one or if you destroy the current one).
  559.   o  Fixed bug where glutSpecialFunc callback would only operate if
  560.      a glutKeyboardFunc callback was also registered.
  561.   o  Fixed bug in color index visual selection so that largest number
  562.      of bits of color resolution is preferred to smallest.
  563.   o  Fixed bug where if a double buffer X window was used to emulate
  564.      a single buffer window, GLUT should set the OpenGL read mode
  565.      to GL_FRONT (it was only changing the draw mode).
  566.   o  Fixed an obscure ordering bug with simultaneous glutPushWindow and
  567.      glutPopWindow calls on different subwindows of the same window.
  568.   o  Now, it is a fatal error to receive an expose event with no
  569.      display callback registered (it was stupid to allow mapped windows
  570.      that made no attempt to redisplay).  The spec has been changed to
  571.      say NULL can not be passed to glutDisplayFunc; previously, it
  572.      said this would disable the callback.  Stupid.  What was I thinking?
  573.   o  GLUT spec is indexed now and generally improved.
  574.   o  Support for IRIX 6.2's N32 and N64 object style to take advantage
  575.      of new MIPS processor instruction sets.  See lib/glut.n32 and
  576.      lib/glut.n64 (IRIX 6.x only).
  577.   o  Fortran bindings also available for N32 and N64.  See lib/fglut.n32
  578.      and lib/fglut.n64.
  579.   o  Tests support the new API version 3 interfaces.
  580.   o  Contributed "bigtest" test program.
  581.   o  Added splatlogo example demonstrating pixel path functionality.
  582.   o  Added zoomdino program demonstrating use overlay rubber-banding.
  583.   o  Contributed demo programs: hanoi, hanoi2, gears, moth, text3d,
  584.      and noof.
  585.   o  Contributed SGI stereo program: stereo-plane
  586.   o  Being out of colors in the default colormap without overlay planes
  587.      will no longer lead to a fatal error when allocating the color gray
  588.      for a pop-up menu.  Instead, GLUT finds the closest matching color
  589.      automatically.  Help from Brian Paul to code this.
  590.   o  Eliminated Glut64.mk from all Makefile.sgi's
  591. GLUT 2.2 -> 2.3
  592. ----------------
  593.   o  Fix obscure problem with how X Input extension button press and
  594.      release events get selected; it seems GLUT should also be
  595.      selecting for the DeviceButtonPressGrab event class since this
  596.      ensures that a release will be delivered to the same window as the
  597.      press; that was my intent for how buttons presses and releases
  598.      should work.  I just didn't know you needed this obscure event
  599.      class to be selected.  Such a grab is the default for pointer
  600.      events.
  601.   o  If windows are indirect, make sure that a glFinish is properly
  602.      done for all windows that have been made current to recently (ie,
  603.      last main loop iteration).  This helps ensure windows don't get
  604.      ahead of themselves.  Previously, GLUT simply did a glFinish to
  605.      whatever window GLUT happened to be made current to last at the
  606.      end of each main loop iteration.
  607.   o  Fix what can be considered a bug where calling glutPostRedisplay
  608.      within a display callback would not leave the redisplay set; this
  609.      applies other routines that set work state needing to be done.
  610.      Essentially, clear the workMask before the work callbacks are done
  611.      instead of after.  The new test15 tests this.
  612.   o  To support other OpenGL higher-level library that might want to
  613.      be able to call glXMakeCurrent, GLUT should not try to track
  614.      make current state and short circuit glXMakeCurrent calls when
  615.      GLUT believes the window/context are already current.  glXMakeCurrent
  616.      should implement the same "short circuit" case, but can appropriately
  617.      track the changed state from multiple libraries.
  618.   o  The glutRemoveMenuItem routine was totally busted previous to 2.3.
  619.      Now it is fixed and test14 is a regression test for it.
  620.   o  Add Greg Humphreys's hanoi program to progs/contrib
  621.   o  Examples demonstrating Open Inventor used with GLUT found in
  622.      progs/inventor
  623.   o  New progs/examples programs:  abgr, triselect, texenv, stenciltst,
  624.      stars, fogtst
  625. GLUT 2.1 -> GLUT 2.2
  626. ---------------------
  627.   o  Fixed bug in glutGet(GLUT_WINDOW_X) and glutGet(GLUT_WINDOW_Y).
  628.   o  Added Philip Winston's human kinetics demo in progs/demos/walker
  629.      (COOL!).
  630.   o  Improved test suite.
  631.   o  Work around SunOS 4.x's non-ANSI compliant realloc.
  632.   o  Better handle delivery of reshape callback.
  633.   o  Pre-build stroke font C files to avoid having to rely on lex/yacc
  634.      working correctly.  Too many Linux systems missing flex/bison or
  635.      having verisons that resulted in undefined symbols while building
  636.      strokegen.
  637.   o  Better portability, mostly avoiding compiler warnings.
  638.   o  64-bit clean (as far as I know!).
  639.   o  Compiles right for systems like DEC Alpha that support GLX 1.1 but
  640.      do not support GLX_SGIS_multisample extension.
  641.   o  At Brian Paul's request for better Mesa support, changed colormap
  642.      allocation to work if RGBA window has PsueoColor visual.
  643.   o  Fix Drew Bliss reported bug in colormap allocation (resulted in
  644.      GLUT programs not correctly sharing colormaps).
  645.   o  Interesting bug involving the fact that XFlush may actually
  646.      read X protocol into Xlib's internal buffers so if you call
  647.      XFlush, then select on the X socket, you might find nothing to
  648.      read, but when in fact there is data in the Xlib internal buffers
  649.      that should be processed.  Using ISDN (I guess it has weird
  650.      network properties) showed this bug in a GLUT test13.  The fix is
  651.      to use XPending after XFlush.
  652.   o  Improve X Input documentation references in the GLUT spec.
  653.   o  Widen margins so spec kills less trees.
  654.   o  Clarify GLUT spec to explain glutGet values returned by
  655.      GLUT_WINDOW_X, GLUT_WINDOW_Y, GLUT_WINDOW_WIDTH, and
  656.      GLUT_WINDOW_HEIGHT as being returned in pixels.
  657.   o  Make sure consistently using reshape (and not resize) within GLUT
  658.      spec.
  659.   o  GLUT spec should document that glutExtensionSupported,
  660.      glutCreateWindow, and glutCreateSubwindow return int.
  661. GLUT 2.0 -> GLUT 2.1
  662. ---------------------
  663.   o  XCOMM comments in Imakefiles results in unusable Makefiles
  664.      for systems that pre-date an X11R5-based imake.
  665.   o  The rings.c and worms.c examples use "float" returning
  666.      versions of trigonometric functions (ie, cosf, sinf, etc.).  While
  667.      ANSI C reserves these names for their logical purpose, many
  668.      systems do not implement these functions.
  669.   o  Calls to __glutWarning in glut_cindex in places lack
  670.      variable %d argument.
  671.   o  Intended comments in lib/Imakefile cause avoiable
  672.      warnings for some C pre-processors.
  673.   o  Old (pre-X11R6) versions of Xlib did not have XK_Page_Up
  674.      and XK_Page_Down keysym defs in /usr/include/X11/keysymdef.h
  675.      These are aliases to XK_Prior and XK_Next.
  676.   o  The X11R5 to_wfont derived strokegen program for converting
  677.      PEX fonts to C data structures was full of memory access
  678.      bugs.  On most systems, they were not fatal.  That's
  679.      what I get for trying to steal PEX code I gues. :-)
  680.   o  Various Purify-detected memory access bugs within the
  681.      GLUT library have been fixed.
  682.   o  Better Imakefile handling of lex usage in lib/glut/Imakefile
  683.   o  Better document colormap management routines.
  684.   o  Correctly document the prototype for glutCreateSubWindow
  685.   o  Add documentation usage hint explaining glutGetWindow
  686.      and glutGetMenu can be used to determine what window
  687.      or menu a callback is for.
  688.   o  Fix bug in glutDetachMenu
  689.   o  Fix bug in delivery of visibility callback for subwindows
  690.      of an unmapped top-level window.
  691.   o  scube.c should use more likely to be optimized
  692.      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) instead of
  693.      glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA)
  694.   o  Supression of various compiler detected warnings through
  695.      the GLUT distribution.
  696.   o  Use of the "polygon offset" extension if available in origami.c
  697.   o  SGI mkmkfiles.sgi script doesn't make Fortran by default now;
  698.      see instructions in README.fortran
  699.   o  Improvements to the test programs.
  700.   o  Avoid X Input extension calls when extension is present but
  701.      no devices are available.
  702. GLUT 1.0 -> GLUT 2.0
  703. ---------------------
  704.   o  API extensions; see README.glut2
  705.   o  Bug fixes.
  706.   o  More demos.
  707.   o  Update documentation.
  708. - Mark