home *** CD-ROM | disk | FTP | other *** search
/ Aminet 10 / aminetcdnumber101996.iso / Aminet / gfx / x11 / Mesa_Amiwin.lha / Mesa-Amiwin / README < prev    next >
Text File  |  1995-11-30  |  27KB  |  712 lines

  1.  
  2.               The Mesa 3-D graphics library
  3.  
  4.                   Version 1.2.5
  5.  
  6.               Copyright (C) 1995  Brian Paul
  7.  
  8.  
  9.  
  10. Introduction
  11. ============
  12.  
  13. Mesa is a 3-D graphics library with an API which is very similar to that
  14. of OpenGL*.  To the extent that Mesa utilizes the OpenGL command syntax
  15. or state machine, it is being used with authorization from Silicon Graphics,
  16. Inc.  However, the author makes no claim that Mesa is in any way a
  17. compatible replacement for OpenGL or associated with Silicon Graphics, Inc.
  18. Those who want a licensed implementation of OpenGL should contact a licensed
  19. vendor.  This software is distributed under the terms of the GNU Library
  20. General Public License, see the LICENSE file for details.
  21.  
  22. * OpenGL(R) is a registered trademark of Silicon Graphics, Inc.
  23.  
  24.  
  25.  
  26. Author
  27. ======
  28.  
  29. Brian Paul
  30. Space Science and Engineering Center
  31. University of Wisconsin - Madison
  32. 1225 W. Dayton St.
  33. Madison, WI  53706
  34.  
  35. brianp@ssec.wisc.edu
  36.  
  37.  
  38.  
  39. Status
  40. ======
  41.  
  42. I've been working on this library in my spare time since August, 1993.
  43. It's currently about 90% complete.  You'll find that most programs which
  44. use the OpenGL tk, aux or GLUT toolkits will work with Mesa without changing
  45. the source code at all.
  46.  
  47. Features which are complete:
  48.     all glBegin() primitives
  49.     all model and view transformations
  50.     clipping (against user clip planes and view volume)
  51.     lighting
  52.     smooth shading
  53.     depth buffering
  54.     accumulation buffer
  55.     alpha testing/blending
  56.     stencil buffer
  57.     dithering
  58.     logic operations
  59.     evaluators  (curves and surfaces)
  60.     feedback/selection
  61.     fog (per-pixel or per-vertex)
  62.     polygon/line stippling
  63.     read/write/copy pixels
  64.     tk and aux libraries for X11
  65.     context switching (multiple windows)
  66.     RGB mode simulated in color mapped windows
  67.     the GLX library (as close as I can get)
  68.     glPixelZoom
  69.     display lists
  70.  
  71. Features which are mostly complete:
  72.     texture mapping
  73.     the GLU library
  74.     NURBS
  75.  
  76. Missing features:
  77.     anti-aliasing
  78.     mipmapping, non-point-sampled texture mapping
  79.     glGetTexGen* functions
  80.     glGetPolygonStipple
  81.  
  82.  
  83.  
  84. The primary goal of this library has been correctness, speed was secondary
  85. (but not neglected!).  Optimizations will be the focus of most future work.
  86.  
  87. The core library was originally written on an Amiga using the DCC compiler.
  88. Later on it was moved to an SGI.  Current development is done on an SGI
  89. system.
  90.  
  91. Mesa works on most Unix workstations with ANSI C and X11.  There are also
  92. drivers for Microsoft Windows and the Macintosh.  See below for more infor-
  93. mation.
  94.  
  95. Please send bug reports to the author.  Include information describing
  96. your system, which version of Mesa you're using, and how to reproduce the
  97. problem.  Bug fixes are especially welcome.  Note that some parts of Mesa
  98. (widgets, GLU tesselator, NURBS, etc) were contributed by others and any
  99. bugs in those components should be sent to the respective author.
  100.  
  101. Anyone is welcome to contribute code to the Mesa project, provided you
  102. agree to the GNU license.
  103.  
  104. Since the OpenGL API is used, OpenGL documentation can serve as the
  105. documentation for Mesa's core functions.  Here are a few sources:
  106.  
  107.   Man pages:    http://www.digital.com:80/pub/doc/opengl/
  108.   Spec doc:     http://www.sgi.com/Technology/openGL/glspec/glspec.html
  109.  
  110.  
  111.  
  112.  
  113. Getting the software
  114. ====================
  115.  
  116. The primary Mesa ftp site is iris.ssec.wisc.edu in the pub/Mesa directory.
  117. There is also a contributors directory in pub/Mesa/contrib.
  118.  
  119.  
  120.  
  121. Manifest
  122. ========
  123.  
  124. The archive file Mesa-1.2.5.tar.Z can be unpacked with:
  125.     zcat Mesa-1.2.5.tar.Z | tar xvf -
  126.  
  127. The archive file Mesa-1.2.5.tar.gz can be unpacked with:
  128.     gzcat Mesa-1.2.5.tar.gz | tar xvf -
  129.  
  130. After you unpacking you should have the following:
  131.  
  132. Mesa/README        - this file
  133. Mesa/LICENSE        - the GNU library license
  134. Mesa/Makefile        - top-level Makefile
  135. Mesa/Make-config    - system configurations used by the Makefiles
  136. Mesa/mklib.*        - scripts for making shared libraries for some systems
  137. Mesa/include/        - application include files
  138. Mesa/lib/        - application libraries, created during installation
  139. Mesa/src/        - source code for core library
  140. Mesa/src-glu/        - source code for utility library
  141. Mesa/src-tk/        - source code for tk library
  142. Mesa/src-aux/        - source code for aux library
  143. Mesa/demos/        - demo programs
  144. Mesa/samples/        - sample OpenGL programs from SGI
  145. Mesa/book/        - example programs from the OpenGL Programming Guide
  146. Mesa/GLUT/        - the home for GLUT
  147. Mesa/widgets/        - the Mesa widgets
  148. Mesa/windows/        - Microsoft Windows driver stuff
  149.  
  150.  
  151.  
  152. Installation for Unix/X11
  153. =========================
  154.  
  155. To compile the library, first type 'make' alone to see the list of system
  156. configurations currently supported.  If you see your configuration on the
  157. list, type 'make <system>'.  Most popular Unix/X workstations are currently
  158. supported.
  159.  
  160. The top-level makefile will execute the makefiles in a number of sub-
  161. directories.  When finished, there should be executables in the "demos/",
  162. "samples/", and "book/" directories for you to try out.
  163.  
  164. If your system is not listed by 'make', you'll have to modify the top-level
  165. Makefile and Make-config files.  There are instructions in each file.
  166.  
  167. If you have compilation problems you should try to fix them and return the
  168. patches to the author.
  169.  
  170. The file src/config.h has many parameters which you can tune before building.
  171.  
  172. If you want to build the Mesa widgets read the widgets/INSTALL file.
  173.  
  174. If you want to build the GLUT library read the GLUT/README-MESA file.
  175.  
  176. Note to HP users:  a Mesa user reports that the HP-UX 10.01 C compiler has
  177. a bug which effects glReadPixels.  A patch for the compiler (PHSS_5743) is
  178. available.  Otherwise be sure your compiler is version 10.13 or later.
  179.  
  180.  
  181.  
  182. Installation for Microsoft Windows
  183. ==================================
  184.  
  185. See the windows/README.WIN file for details.  Note that any problems with
  186. the Windows driver should be addressed to Mark Peterson.
  187.  
  188.  
  189.  
  190. Installation for Macintosh
  191. ==========================
  192.  
  193. NOTE:  At this time, the Mac driver does not work with Mesa 1.2.5 because
  194. of changes in the device driver.  Use Mesa 1.2.3 until the Mac driver is
  195. updated.
  196.  
  197. In addition to the Mesa.tar.Z file you'll also have to get the following
  198. files from the ftp contrib directory:
  199.     GLUT4Mac.sit.hqx
  200.     Mesa4Mac.sit.1.hqx
  201.     Mesa4Mac.sit.2.hqx
  202. Miklos Fazekas (mti-inf@odin.net) should be contacted if you have questions
  203. about the Mac driver.
  204.  
  205.  
  206.  
  207. Using the library (with Unix/X11 systems)
  208. =========================================
  209.  
  210. Shared libraries:
  211.    If you compile shared libraries you may have to set an environment
  212.    variable to specify where the Mesa libraries are located.  On Linux and
  213.    Sun systems for example, set the LD_LIBRARY_PATH variable to include
  214.    /your-dir/Mesa/lib.   Otherwise, when you try to run a demo it may fail
  215.    with a message saying that one or more libraries couldn't be found.
  216.  
  217. Header and library files:
  218.    To use the library with your own applications you may want to move the
  219.    files in "include/" to "/usr/local/include/" and the libraries in "lib/"
  220.    to "/usr/local/lib/".  Then compile your graphics application with
  221.    "-I/usr/local/include" and link with "-L/usr/local/lib -lMesaGL -lMesaGLU",
  222.    for example.  Look at the demos/Makefile for an example.
  223.  
  224.    As of version 1.2.3, Mesa's header files use the same GLenum and GLUenum
  225.    values as SGI's (and most/all other vendor's) OpenGL headers.  This means
  226.    you can freely mix object files compiled with OpenGL or Mesa headers.
  227.    In fact, on systems with dynamic runtime linkers it's possible to dynam-
  228.    ically link with Mesa or OpenGL shared libraries at runtime, without
  229.    recompiling or relinking anything!
  230.  
  231.    Using IRIX 5.x as an example, you can run SGI's OpenGL demos with the
  232.    Mesa shared libraries as follows.  Let's assume you're installing Mesa
  233.    in /usr/local/Mesa and using the C-shell:
  234.        % cd /usr/local/Mesa
  235.        % make irix5-dso
  236.        % cd lib
  237.        % ln -s libMesaGL.so libGL.so
  238.        % setenv _RLD_LIST "/usr/local/Mesa/lib/libGL.so:DEFAULT"
  239.        % /usr/demos/bin/ideas_ogl      // this is a test
  240.  
  241.    You can now run OpenGL executables on almost any X display!  There may
  242.    be some problems from the fact that Mesa supports many X visual types
  243.    that an OpenGL client may not expect (grayscale for example).  In this
  244.    case the application may abort, print error messages, or just behave
  245.    strangely.  You may have to experiment with the MESA_RGB_VISUAL envi-
  246.    ronment variable.
  247.  
  248.  
  249. Toolkits:
  250.    Initially, you may write your own Mesa programs using the aux or tk tool-
  251.    kits which are used in the OpenGL Programming Guide and in SGI's demos,
  252.    respectively.  However, these toolkits weren't meant for use in real app-
  253.    lications.  You have several alternatives:
  254.  
  255.       1. Use the GLX (simulated since Mesa doesn't implement the GLX proto-
  256.       col) functions.  These functions look like, and try to act like, the
  257.       real GLX functions used by OpenGL in conjunction with the X window
  258.       system.
  259.  
  260.       2. GLUT (OpenGL Utility Toolkit) was written by Mark Kilgard at SGI as
  261.       a replacement for aux and tk.  It provides a simple, portable, window-
  262.       system independent interface allowing you to write OpenGL applications
  263.       quickly and easily.  GLUT isn't included with Mesa but you'll find
  264.       instructions on how to get and build GLUT in the file GLUT/README-MESA.
  265.  
  266.       3. Use a Mesa widgets.  Look in the widgets/ directory for more info.
  267.  
  268.       4. Go directly to the X/Mesa interface using the functions described
  269.       in include/GL/xmesa.h.  This requires experience with X programming.
  270.       Using GLX is probably a better choice because it's portable.
  271.  
  272.  
  273. Performance tips:
  274.    1. Turn off smooth shading when you don't need it (glShadeModel)
  275.    2. Turn off depth buffering when you don't need it.
  276.    3. Use double buffering as it's often faster than single buffering
  277.    4. Compile in the X Shared Memory extension option if it's supported
  278.       on your system by adding -DSHM to CFLAGS and -lXext to XLIBS for
  279.       your system in the Make-config file.
  280.    5. Recompile Mesa with more optimization if possible.
  281.    6. Try to maximize the amount of drawing done between glBegin/glEnd pairs.
  282.       This can be especially beneficial with Mesa 1.2.3 or later because of
  283.       its "vectorized" transformation code.
  284.    7. Use the MESA_BACK_BUFFER variable to find best performance in double
  285.       buffered mode.
  286.  
  287.  
  288. Debugging:
  289.    Normally Mesa records but does not notify the user of errors.  It is up
  290.    to the application to call glGetError to check for errors.  Mesa supports
  291.    an environment variable, MESA_DEBUG, to help with debugging.  If MESA_DEBUG
  292.    is defined, a message will be printed to stdout whenever an error occurs.
  293.  
  294.  
  295. X Display Modes:
  296.    Mesa supports rendering in most X visual types and depths.  When a
  297.    TrueColor or DirectColor visual isn't available dithering is used in RGB
  298.    mode.
  299.  
  300.    The glXChooseVisual function tries its best to pick an appropriate visual
  301.    for the given attribute list.  However, if this doesn't suit your needs
  302.    you can force Mesa to use any X visual you want (any supported by your
  303.    X server that is) by setting the MESA_RGB_VISUAL and MESA_CI_VISUAL
  304.    environment variables.  When an RGB visual is requested, glXChooseVisual
  305.    will first look if the MESA_RGB_VISUAL variable is defined.  If so, it
  306.    will try to use the specified visual.  Similarly, when a color index
  307.    visual is requested, glXChooseVisual will look for the MESA_CI_VISUAL
  308.    variable.
  309.  
  310.    The format of accepted values is:  <visual-class> <depth>
  311.    Here are some examples:
  312.  
  313.    using the C-shell:
  314.     % setenv MESA_RGB_VISUAL "TrueColor 8"        // 8-bit TrueColor
  315.     % setenv MESA_CI_VISUAL "PseudoColor 12"    // 12-bit PseudoColor
  316.     % setenv MESA_RGB_VISUAL "PseudoColor 8"    // 8-bit PseudoColor
  317.  
  318.    using the KornShell:
  319.     $ export MESA_RGB_VISUAL="TrueColor 8"
  320.     $ export MESA_CI_VISUAL="PseudoColor 12"
  321.     $ export MESA_RGB_VISUAL="PseudoColor 8"
  322.  
  323.  
  324. Double buffering:
  325.    Mesa can use either an X Pixmap or XImage as the backbuffer when in
  326.    double buffer mode.  Using GLX, the default is to use an XImage.  The
  327.    MESA_BACK_BUFFER environment variable can override this.  The valid
  328.    values for MESA_BACK_BUFFER are:  Pixmap and XImage (only the first
  329.    letter is checked, case doesn't matter).
  330.  
  331.    A pixmap is faster when drawing simple lines and polygons while an XImage
  332.    is faster when Mesa has to do pixel-by-pixel rendering.  Experiment with
  333.    the MESA_BACK_BUFFER variable to see which is faster for your application.  
  334.  
  335.  
  336. Colormaps:
  337.    When using Mesa directly or with GLX, it's up to the application writer
  338.    to create a window with an appropriate colormap.  The aux, tk, and GLUT
  339.    toolkits try to minimize colormap "flashing" by sharing colormaps when
  340.    possible.  Specifically, if the visual and depth of the window matches
  341.    that of the root window, the root window's colormap will be shared by
  342.    the Mesa window.  Otherwise, a new, private colormap will be allocated.
  343.  
  344.    When sharing the root colormap, Mesa may be unable to allocate the colors
  345.    it needs, resulting in poor color quality.  This can happen when a
  346.    large number of colorcells in the root colormap are already allocated.
  347.    To prevent colormap sharing in aux, tk and GLUT, define the environment
  348.    variable MESA_PRIVATE_CMAP.  The value isn't significant.
  349.  
  350.  
  351. Fortran bindings:
  352.    Mesa 1.2.4 introduces a preliminary Fortran API to Mesa.  Only a subset
  353.    of the gl* functions are supported at this time.  None of the glu*
  354.    functions are available.  Also, you'll have to write your window system
  355.    interface code in C or use the Fortan interface to GLUT since the GLX,
  356.    XMesa, and widget interfaces don't work with Fortran.
  357.  
  358.    To use Mesa from Fortran you must include Mesa/include/GL/fgl.h in
  359.    your program.  All the "GL_FOO_BAR" constants are identical in name
  360.    and value to their C counterparts.  API function names, however, are
  361.    different in that they are all prefixed with 'fgl' instead of 'gl.'
  362.  
  363.    Link your Fortran application with libMesaGL.a just like you would for
  364.    a C application.
  365.  
  366.    See the Mesa/src/fortran.c file to see how wrappers are constructed
  367.    for each gl* function.  If a function you need doesn't have a wrapper
  368.    yet, please try to implement it yourself then send the new code to
  369.    the author.
  370.  
  371.    The Fortran interface has only been tested on a few systems (IRIX,
  372.    AIX) at this time.  However, the fortran.c file structure should be
  373.    flexible enough to adapt to most other system's C/Fortran calling
  374.    conventions.  See the comments in that file for more info.
  375.  
  376.    demos/fdraw.f and demos/ftest.c is an example of using the Fortran API.
  377.    Also read include/GL/fgl.h for comments about Fortran API function
  378.    argument types.
  379.  
  380.  
  381. Gamma correction:
  382.    To compensate for the nonlinear relationship between pixel values
  383.    and displayed intensities, there is a gamma correction feature in
  384.    Mesa.  Some systems, such as Silicon Graphics, support gamma
  385.    correction in hardware (man gamma) so you won't need to use Mesa's
  386.    gamma facility.  Other systems, however, may need gamma adjustment
  387.    to produce images which look correct.  If in the past you thought
  388.    Mesa's images were too dim, read on.
  389.  
  390.    Gamma correction is controlled with the MESA_GAMMA environment
  391.    variable.  Its value is of the form "Gr Gg Gb" or just "G" where
  392.    Gr is the red gamma value, Gg is the green gamma value, Gb is the
  393.    blue gamma value and G is one gamma value to use for all three
  394.    channels.  Each value is a positive real number typically in the
  395.    range 1.0 to 2.5.  The defaults are all 1.0, effectively disabling
  396.    gamma correction.  Examples using csh:
  397.  
  398.     % setenv MESA_GAMMA "2.3 2.2 2.4"    // separate R,G,B values
  399.     % setenv MESA_GAMMA "2.0"        // same gamma for R,G,B
  400.  
  401.    The demos/gamma.c program may help you to determine reasonable gamma
  402.    value for your display.  With correct gamma values, the color intensities
  403.    displayed in the top row (drawn by dithering) should nearly match those
  404.    in the bottom row (drawn as grays).
  405.  
  406.    Mesa implements gamma correction with a lookup table which translates
  407.    a "linear" pixel value to a gamma-corrected pixel value.  There is a
  408.    small performance penalty.  Gamma correction only works in RGB mode.
  409.    Also be aware that pixel values read back from the frame buffer will
  410.    not be "un-corrected" so glReadPixels may not return the same data
  411.    drawn with glDrawPixels.
  412.  
  413.    For more information about gamma correction see:
  414.    http://www.inforamp.net/~poynton/notes/colour_and_gamma/GammaFAQ.html
  415.  
  416.  
  417. Off-screen rendering:
  418.    Mesa 1.2.4 introduced off-screen rendering, a facility for generating
  419.    3-D imagery without having to open a window on your display.  Mesa's
  420.    simple off-screen rendering interface is completely operating system
  421.    and window system independent so programs which use off-screen rendering
  422.    should be very portable.  This new feature effectively enables you to
  423.    use Mesa as an off-line, batch-oriented renderer.
  424.  
  425.    The "OSMesa" API provides 3 functions for making off-screen renderings:
  426.    OSMesaCreateContext(), OSMesaMakeCurrent(), and OSMesaDestroyContext().
  427.    See the Mesa/include/GL/osmesa.h header for more information.  See the
  428.    demos/osdemo.c file for an example program.   There is no facility for
  429.    writing images to files.
  430.  
  431.    If you want to generate large images (larger than 1280x1024) you'll
  432.    have to edit the src/config.h file to change MAX_WIDTH and MAX_HEIGHT
  433.    then recompile Mesa.  Image size should only be limited by available
  434.    memory.
  435.  
  436.  
  437.  
  438. Miscellaneous
  439. =============
  440.  
  441. There is a Mesa WWW page:  http://www.ssec.wisc.edu/~brianp/Mesa.html
  442.  
  443. There is a Mesa mailing list.  To subscribe, send the following message to
  444. the address listproc@iqm.unicamp.br
  445.  
  446. subs mesa <your name>
  447.  
  448. For example:
  449.  
  450. subs mesa Brian Paul
  451.  
  452. You will receive a welcome message from the list server when you have been
  453. added to the list.  It tells you how to post messages to the list, how
  454. to unsubscribe, etc.  Thanks to Pedro Vazquez for setting up the list.
  455.  
  456. There is a contrib/ subdirectory on the Mesa ftp site which contains
  457. contributions from Mesa users.  See the README file in that directory for
  458. more information.
  459.  
  460.  
  461.  
  462. Known Bugs
  463. ==========
  464.  
  465. 1. Perspective-corrected texture map coordinate interpolation can fail under
  466.    certain conditions due to numerical error.
  467.  
  468. 2. There may be "cracks" between renderings of adjacent NURBS surfaces.
  469.  
  470. 3. NURBS, for now, can't have attribute info other than geometric data.
  471.  
  472. 4. Evaluator automatic normal vectors are miscalculated under certain
  473.    conditions.
  474.  
  475. 5. glCopyPixels gives undefined results when source and destination regions
  476.    overlap and pixel zoom!=1.0.
  477.  
  478. 6. Mesa doesn't work too well on Crays.  The problem is that Crays do not
  479.    have the exact C data type sizes which Mesa relies on.  Better Cray
  480.    support may or may not be seen in the future.
  481.  
  482.  
  483.  
  484. Version History
  485. ===============
  486.  
  487. 1.0 beta   February 1995
  488.     Initial release
  489.  
  490. 1.1 beta   March 4, 1995
  491.     Many improvements:
  492.     - faster point and line drawing (2x faster)
  493.     - more systems supported, better Makefiles
  494.     - many small bug fixes
  495.     - pseudo-GLX functions added
  496.     - GLUT support
  497.     - new implementation of evaluators (eval2.c)
  498.     - Renamed lib*.a files to avoid collisions
  499.  
  500. 1.1.1 beta   March 7, 1995
  501.     Reverted from eval2.c to eval.c due to FPE on Linux
  502.     more speed improvements
  503.     more Makefile changes
  504.  
  505. 1.1.2 beta   March 14, 1995
  506.     Using eval2.c again
  507.     more FPE-prevention checks (0-length normals are OK)
  508.     a few small bug fixes
  509.     much faster pixel logic ops!
  510.     faster transformation arithmetic
  511.     implementation of SGI's blending extensions
  512.     glXUseXFont implemented
  513.     added MESA_DEBUG environment variable support
  514.  
  515. 1.1.3 beta   March 31, 1995
  516.     gluScaleImage() and gluBuild2DMipMaps() implemented
  517.     Mesa widgets for Xt/Motif
  518.     more bug fixes
  519.     blendEXT demos
  520.     added environment variables for selecting visuals
  521.     almost all GLUT demos work correctly now
  522.     faster X device driver functions
  523.  
  524. 1.1.4 beta   April 20, 1995
  525.     Bug fixes:
  526.     - missing #define SEEK_SET in src-tk/image.c
  527.     - compile glShadeModel into display lists
  528.     - fixed pow() domain error in src/light.c
  529.     - fixed "flickering bitmaps" in double buffer mode
  530.     - fixed tk.h and aux.h for C++
  531.     - state of LIGHT_MODEL_LOCAL_VIEWER was inverted
  532.     New features:
  533.     - MUCH, MUCH nicer dithering in 8-bit RGB mode
  534.     - updated widgets and widget demos
  535.     - Implemented GLXPixmap functions
  536.     - Added GLU 1.1 and GLX 1.1 functions
  537.     - Changed the X/Mesa interface API, more versatile
  538.     - Implemented gluPartialDisk()
  539.  
  540. 1.2   May 22, 1995
  541.     Bug fixes:
  542.     - IRIX 4.x makefile problem
  543.     - modified tk to share root colormap as needed
  544.     - gluLookAt normalization problem
  545.     - suppress Expose, NoExpose events in swapbuffers
  546.     - glBitmap() and glDrawPixels() clipping
  547.     New features:
  548.     - GL_BLEND, GL_MODULATE, GL_DECAL, and GL_REPLACE_EXT texture
  549.           modes implemented
  550.     - texture maps stored more efficiently
  551.     - texture maps can be compiled into display lists
  552.     - Bogdan Sikorski's GLU polygon tesselation code
  553.     - Linas Vepstas's sweep and extrusion library
  554.     - glXCreateContext()'s shareList parameter works as it's supposed to.
  555.           XMesaCreateContext() updated to accept a shareList parameter too.
  556.     - Mesa can be compiled with real OpenGL .h files
  557.     - MESA_BACK_BUFFER environment variable
  558.     - better GLX error checking
  559.  
  560. 1.2.1   June 22, 1995
  561.     Bug fixes:
  562.     - X/Mesa double buffer window resize crash
  563.     - widgets now pass PointerMotion events
  564.     - X/Mesa incorrect default clear color and drawing color
  565.     - more robust X MIT-SHM support in X/Mesa
  566.     - glTexImage( format=GL_LUMINANCE ) didn't work
  567.     - GL_LINE mode polygons with line width > 1.0 could cause a crash
  568.     - numerous feedback bugs
  569.     - glReadPixels() from depth buffer was wrong
  570.     - error prone depth and stencil buffer allocation
  571.     New features:
  572.     - Preliminary Microsoft Windows driver
  573.     - Implemented a number of missing functions: glEvalCoord[12][df]v(),
  574.         glGet...(), etc.
  575.     - Added a few missing symbols to gl.h and glu.h
  576.     - Faster rendering of smooth-shaded, RGBA, depth-buffered polygons.
  577.     - Faster rendering of lines when width=2.0
  578.     - Stencil-related functions now work in display lists
  579.     Changes:
  580.     - renamed aux.h as glaux.h (MS-DOS names can't start with aux)
  581.     - most filenames are in 8.3 format to accomodate MS-DOS
  582.     - use GLubytes to store arrays of colors instead of GLints
  583.  
  584. 1.2.2   August 2, 1995
  585.     New features:
  586.     - texture mapped points and lines
  587.     - NURBS! (but not 100% complete)
  588.     - viewports may safely extend beyond window boundaries
  589.     - MESA_PRIVATE_CMAP environment variable
  590.     - Grayscale X display support
  591.     - two new demos:  demos/gears.c and demos/shadow.c
  592.     - MachTen for Macintosh configuration
  593.     Bug fixes:
  594.     - glGet*(GL_DEPTH_BITS) returned bytes, not bits
  595.     - point, line, and bitmap rasterization suffered from roundoff errors
  596.     - fixed a division by zero error in line clippping
  597.     - occasional wrong default background color really fixed!
  598.     - glDepthFunc(GL_ALWAYS) with glDepthMask(GL_FALSE) didn't work
  599.     - gluBuild2DMipmaps malloc problem fixed
  600.     - view volume clipping of smooth shaded lines resulted in bad colors
  601.     Changes:
  602.     - new visual selection method in glXChooseVisual()
  603.     - improved GLU quadric functions
  604.     - call XSync for glFinish and XFlush for glFlush
  605.     - glVertex() calls now use a function pointer to avoid conditionals
  606.     - removed contrib directory from Mesa tar file (available on ftp site)
  607.     - AIX shared library support
  608.     - Removed GLUenum type as it's not in OpenGL
  609.  
  610. 1.2.3   September 26, 1995
  611.     New features:
  612.     - Mesa header files now equivalent to SGI OpenGL headers
  613.     - Support for HP's Color Recovery dithering displays
  614.     - Faster vertex transformation
  615.     - Faster raster operations into X windows under certain conditions
  616.     - New configurations:  HP w/ shared libs, Ultrix w/ GCC, Data General
  617.     - 4-bit visuals now supported
  618.     Bug fixes:
  619.     - glScissor bug fixed
  620.     - round-off errors in clipping lines against clip planes fixed
  621.     - byte swapping between hosts and display servers implemented
  622.     - glGetError() can be called without a current rendering context
  623.     - problem with accidentally culled polygons is fixed
  624.     - fixed some widget compilation problems
  625.  
  626. 1.2.4   November 17, 1995
  627.     New features:
  628.     - More speed improvements (lighting, fogging, polygon drawing)
  629.     - Window system and OS-independent off-screen rendering
  630.     - Preliminary Fortran bindings
  631.     - glPolygonOffsetEXT implemented
  632.     - glColorMask and glIndexMask now fully implemented
  633.     - glPixelZoom implemented
  634.     - display lists fully implemented
  635.     - gamma correction
  636.     - dithering in 8-bit TrueColor/DirectColor visuals
  637.     Changes:
  638.     - Improved device driver interface
  639.     - tk.h renamed to gltk.h to avoid conflicts with Tcl's Tk
  640.     - Dithering support moved from core into device driver
  641.     Bug fixes:
  642.     - glEnable/Disable( GL_LIGHTING ) didn't always take effect
  643.     - glReadPixels byte swapping was broken
  644.     - glMaterial with pname==GL_AMBIENT_AND_DIFFUSE was broken
  645.     - duplicate glColor4b() prototype in GL/gl.h removed
  646.     - stripes in wave -ci demo fixed
  647.     - GL_LINEAR_MIPMAP_NEAREST had wrong value
  648.     - bugs in HP Color Recovery support fixed
  649.     - fixed bug when blending lines, points, bitmaps outside of window
  650.  
  651. 1.2.5   November 30, 1995
  652.     New Features:
  653.     - updated MS Windows driver
  654.     - new implementation of StaticGray/GrayScale visual support
  655.     Bug fixes:
  656.     - pixelzooming with gamma correction or blending didn't work
  657.     - HP color recovery visual wasn't being picked by glXChooseVisual
  658.     - glClear didn't always observe glColorMask changes
  659.     - olympic and offset demos didn't compile on some Suns
  660.     - texcoord clamping wasn't correct
  661.     - a polygon optimization introduced an occasional sampling problem
  662.  
  663.  
  664. Coming up:
  665.    better texture mapping
  666.    faster polygon and line drawing
  667.  
  668.  
  669.  
  670. Why is it the library called Mesa?
  671. ==================================
  672.  
  673. Why not?  More obvious names were considered but had to be rejected:
  674. FreeGL (too similar to the trademarked name OpenGL), Free3D (too similar
  675. to DEC's Open3D).  Also, I'm tired of acronyms.
  676.  
  677. [I've recently discovered that at least two other software products use the
  678. name Mesa.  A name change may be necessary in the future.  Suggestions are
  679. welcome!]
  680.  
  681.  
  682.  
  683. Thanks to
  684. =========
  685.  
  686. Erich Stefan Boleyn - for the glRotate code and testing early Mesa
  687. Joe Kiniry, Kendall Bennett - for opinions and discussion
  688. Marc Buffat - for the gluProject and gluUnproject functions
  689. Bernd Barsuhn, Volker Weiss - for the new implementation of evaluators
  690. Philip Brown - for the initial GLX, GLUT implementation
  691. Thorsten Ohl - for glXUseXFont() and glBitmap bug fixes
  692. Thomas Malik - for new invert_matrix and other xform.c code
  693. Michael Pichler - for X colormap code
  694. Thorsten Ohl, Jeroen van der Zijp - for the widget set
  695. Bob Mercier - for the new 8-bit RGB dithering code
  696. Pedro Vazquez - for establishing the Mesa mailing list
  697. Bogdan Sikorski - for the GLU polygon tesselation code and NURBS
  698. Linas Vepstas - for his extrusion and swept surface library
  699. Frederic Devernay - for improved X shared memory support
  700. Asif Khan - for bringing _many_ subtle bugs to my attention
  701. Mark Peterson - for the MS Windows driver for Mesa
  702. Gene Lett and Kerris Renkin - for diagnosing several rasterization problems
  703. Alex De Bruyn - for HP Color Recovery display support
  704. Miklos Fazekas - for the Macintosh driver
  705. Frederic Devernay - for many Sun configs and lots of useful feedback
  706.  
  707. Your contributions are greatly appreciated!
  708.  
  709.  
  710.  
  711. This file last revised:  30 November 1995
  712.