FAQ.glut
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:36k
源码类别:

GIS编程

开发平台:

Visual C++

  1. An on-line (possibly more up-to-date) version of this GLUT Frequently
  2. Asked Questions list can be found at:
  3.   http://reality.sgi.com/opengl/glut3/glut-faq.html
  4. Here are few questions I expect to be frequently asked about GLUT 3.5.
  5. First, here are tag-line summaries of the question subject matter.
  6. Q1:   Problems building GLUT.  I've tried to use the "mkmkfiles.imake"
  7.       script to generate Makefiles so I can build GLUT, but it doesn't
  8.       seem to work.  What should I try?
  9. Q2:   More GUI features.  GLUT needs improved menus, dialog boxes,
  10.       scrollbars, text entry fields, etc. to be useful to me.  What
  11.       should I do?
  12. Q3:   New with GLUT 3.0.  What new things are in GLUT 3.0?
  13. Q4:   GLUT for Windows 95 and NT.  Is there a version of GLUT for
  14.       Windows NT or Windows 95?
  15. Q5:   GLUT for OS/2.  Is there a version of GLUT for OS/2?
  16. Q6:   GLUT for Power Macintosh.  Is there a version of GLUT for the
  17.       Power Macintosh?
  18. Q7:   GLUT 3.0 incompatibilities.  I'm hesitant about upgrading to GLUT
  19.       3.0 since I've got things working will with GLUT 2.3.  Is the
  20.       transition painful?
  21. Q8:   GLUT and Motif.  So how do I use GLUT and Motif together?
  22. Q9:   aux convension to GLUT.  I have a bunch of simple OpenGL programs
  23.       using the aux toolkit descibed in the OpenGL Programming Guide
  24.       (the "red" book).  Is there an easy way to convert them to GLUT?
  25. Q10:  SGI N32 and 64-bit support.  I have IRIX 6.2 (or 6.1) and I'd
  26.       like to write GLUT programs run in true 64-bit and/or benefit
  27.       from the recent, faster MIPS processors.  How do I build GLUT to
  28.       support these newer application binary interfaces (ABIs)?
  29. Q11:  FORTRAN and GLUT.  I'd like to write FORTRAN programs using GLUT
  30.       and OpenGL.  How do I use GLUT with FORTRAN?
  31. Q12:  Sophisticated input devices.  I'd like to use the sophisticated
  32.       input devices that GLUT supports.  What should I know about this?
  33. Q13:  GLUT and Open Inventor.  Can I use GLUT and Open Inventor?
  34. Q14:  GLUT, Sun, and Overlays.  I have Sun workstation, and it is
  35.       supposed to support overlays.  So why does GLUT not use them?
  36. Q15:  The GLUT stroke font.  The stroke font used for GLUT looks
  37.       familar.  Where did it come from?
  38. Q16:  My book about GLUT.  I read in the NOTICE file that you are
  39.       writing a book on programming OpenGL for the X Window System.
  40.       Where can I get it?
  41. Q17:  GLUT and Microsoft portability.  You mention an unnamed bu "very
  42.       large window system software vendor" as the reason portable GLUT
  43.       programs should not directly include <GL/gl.h> and <GL/glu.h>
  44.       directly.  What's the vendor and what are the details?
  45. Q18:  GLUT and networking.  I want my GLUT program to read and send
  46.       information over a socket to some other program.  How do I do
  47.       this in in GLUT?
  48. Q19:  Asking GLUT questions.  Where's the best place to ask questions
  49.       about GLUT or OpenGL?  Can I just email them to you?
  50. Q20:  Free OpenGL.  My workstation doesn't have OpenGL.  Where can I get a
  51.       free copy to use with GLUT?
  52. Q21:  GLUT overlay example code.  I hear GLUT 3.0 has overlay support.
  53.       Where is an example?
  54. Q22:  BadMatch errors running GLUT programs.  I get BadMatch X protocol
  55.       errors when I run GLUT programs. What gives?
  56. Q23:  New in GLUT 3.1.  What is new in GLUT 3.1?
  57. Q24:  Shared libraries for Linux.  How do I make Linux shared libraries
  58.       for GLUT?
  59. Q25:  New in GLUT 3.2.  What is new in GLUT 3.2?
  60. Q26:  GLUT API man pages.  I've heard GLUT 3.2 has man pages.  How do I
  61.       use them?
  62. Q27:  Fast window repair for Mesa.  What is the MESA_SWAP_HACK in GLUT
  63.       3.2?  How does it help Mesa users avoid excessive window redraws?
  64. Q28:  Advanced GLUT example .rgb image file.  I try to run the examples in
  65.       progs/advanced but they don't work for lack of image files.
  66.       Where can I get those files?
  67. Q29:  IRIX 6.3 and 6.4 fast atoms support issues for older IRIX
  68.       releases.  Why doesn't GLUT programs compiled on IRIX 6.4 or 6.3
  69.       work earlier releases?
  70. Q30:  GLUT for the Power Macintosh.  Can I get a version of GLUT for the
  71.       Power Macintosh?
  72. Q31:  New in GLUT 3.4.  What is new in GLUT 3.4?
  73. Q32:  Cosmo3D beta and GLUT problem.  I installed SGI's Cosmo3D beta and
  74.       GLUT, and I'm having problems compiling GLUT programs.  What gives?
  75. Q33:  New in GLUT 3.5.  What is new in GLUT 3.5?
  76. Q34:  Using the precompiled GLUT DLLs with Borland compilers.  How do I use
  77.       the precompiled Win32 GLUT DLLs with Borland compilers?
  78. Q35:  Using GLUT with C++.  Are there any C++ wrappers for GLUT?
  79. Q36:  Avoiding the Console window for Win32 GLUT programs.  How do you avoid
  80.       the Console window appearing when you compiler a Win32 GLUT
  81.       application with Microsoft compilers?
  82. Q37:  New in GLUT 3.6.  What is new in GLUT 3.6?
  83. Q38:  O2 build problmes with glXChannelRectSyncSGIX.  On my IRIX 6.3 SGI O2
  84.       workstation, why do I get errors about "glXChannelRectSyncSGIX"
  85.       being unresolved building certain GLUT examples?
  86. Q39:  Using GLUT with Microsoft OpenGL 1.1 and compiling GLUT with
  87.       Borland compilers causes GLUT applications to generates floating
  88.       point exceptions.  What can be done?
  89. Q40:  Using GLUT with SGI OpenGL for Windows and compiling with
  90.       Borland compilers results in linking problems.  What can be
  91.       done?
  92. Q41:  What is GameGLUT?
  93. Q42:  I use a callback registered with "atexit" to clean up my temporary
  94.       files and stuff.  Under Windows, my atexit callback is not being
  95.       called if you quit by application by clicking the X box or using
  96.       the Windows Close border menu.  What gives?
  97. Q43:  My Unix GLUT program has a variable named "select".  When I run
  98.       my program it crashes on startup in code that is not mine.
  99.       What gives?
  100. Q44:  I use Imakefiles to build GLUT.  How do I make shared/debug/profiling
  101.       versions of the various GLUT libraries?
  102. --
  103. Q1:  I've tried to use the "mkmkfiles.imake" script to generate
  104.      Makefiles so I can build GLUT, but it doesn't seem to work.  What
  105.      should I try?
  106. A1:  While Imakefiles are supposted to be system independent (hence
  107.      the "I"), the commands to translate Imakefiles into Makefiles
  108.      varies from system to system.  The X Consortium provides a command
  109.      called "xmkmf", but vendors do not put this command in a
  110.      consistent place.  The "mkmkfiles.imake" script tries its best to
  111.      generate Makefiles, but may get confused by different vendors
  112.      configurations that I am not aware of.
  113.      It is also possible the imake configuration files (typically
  114.      located at /usr/lib/X11/config) are buggy or from a very old
  115.      version of X.
  116.      SGI users can benefit from using the "mkmkfile.sgi" script that
  117.      uses SGI's parallel make, though "mkmkfiles.imake" should work
  118.      too.
  119. --
  120. Q2:  GLUT needs improved menus, dialog boxes, scrollbars, text
  121.      entry fields, etc. to be useful to me.  What should I do?
  122. A2:  GLUT does not pretend to be a full-featured graphical user
  123.      interface toolkit.
  124.      You _could_ write these sorts of GUI objects using GLUT and OpenGL
  125.      if you needed to.  The other alternative is to use Motif or
  126.      whatever full featured toolkit you have.
  127.      A little toolkit called micro-UI uses OpenGL for rendering and is
  128.      based on GLUT.  The toolkit was developed by Tom Davis.  See the
  129.      README.mui file the accompanies GLUT 3.5 and up.
  130. --
  131. Q3:  What new things are in GLUT 3.0?
  132. A3:  See README.glut3 or read The OpenGL Utility (GLUT) Programming
  133.      Interface document.
  134. --
  135. Q4:  Is there a version of GLUT for Windows NT or Windows 95?
  136. A4:  As of GLUT 3.5, GLUT now builds for both Win32 and X11 window
  137.      systems.  Much thanks to Nate Robins.  See the README.win file
  138.      contained in GLUT 3.5 for details.  GLUT 3.6 improved the Win32
  139.      GLUT support considerably.
  140. --
  141. Q5:  Is there a version of GLUT for OS/2?
  142. A5:  Yes.  I believe a version based on GLUT 2.x is distributed on an
  143.      OS/2 OpenGL developer's CD-ROM.
  144.      You may have reasonable luck porting the Win32 version of the
  145.      GLUT 3.6 distribution to OS/2.  If you manage to do this, please
  146.      contact me.
  147. --
  148. Q6:  Is there a version of GLUT for the Power Macintosh?
  149. A6:  Conix Graphics supplies GLUT 3.5 with their Macintosh OpenGL
  150.      implementation.  See http://www.conix3d.com.
  151.      Was told by Template Graphics that an incomplete version of
  152.      GLUT had been developed for their OpenGL product for the Power
  153.      Macintosh.  I am not sure if it was ever completed or made
  154.      available.
  155. --
  156. Q7:  I'm hesitant about upgrading to GLUT 3.0 since I've got things
  157.      working will with GLUT 2.3.  Is the transition painful?
  158. A7:  I do not believe so.  There are two changes worth noting that
  159.      _may_ affect programs you have written.
  160.      First, you need a display callback registered before your display
  161.      your windows on the screen.  It did not make sense for this to not
  162.      be true.  In all likeihood, this should not affect your GLUT
  163.      programs if they written well.
  164.      Second, you can no longer change, create, or destroy menus while
  165.      pop-up menus are in use.  Before, you could do this, but it meant
  166.      a menu might be changed while in use.  It was near impossible to
  167.      describe what should happen in the case of menus being changed
  168.      while in use that was likely to be portable to the way other
  169.      window systems handled menus, so I made the practice illegal.
  170.      You can register a menu status callback to know when menus become
  171.      used and unused to avoid changing menus while they are in use.
  172.      For more details about what has changed, see the CHANGES file.
  173. --
  174. Q8:  So how do I use GLUT and Motif together?
  175. A8:  You don't.  To make GLUT simple and easy-to-program, GLUT
  176.      supplies its own event processing loop.  This makes it nearly
  177.      impossible to combine GLUT and Motif.  If you want Motif, you
  178.      probably want a full-featured toolkit, and you ship skip GLUT and
  179.      implement your application directly in Motif.
  180. --
  181. Q9:  I have a bunch of simple OpenGL programs using the aux toolkit
  182.      descibed in the OpenGL Programming Guide (the "red" book).  Is
  183.      there an easy way to convert them to GLUT?
  184. A9:  In the progs/redbook directory, there is a script named
  185.      aux2glut.sed  It will give you a good start at converting simple
  186.      aux calls to their GLUT equivalents.  It is a good start, but
  187.      you'll still have to hand edit some things.
  188.      Here's a usage example:
  189.      sed -f aux2glut.sed < aux_prog. > glut_prog.c
  190.      Note that the second edition of the OpenGL Programming Guide uses
  191.      GLUT and not the aux toolkit.
  192. --
  193. Q10: I have IRIX 6.2 (or 6.1) and I'd like to write GLUT programs
  194.      run in true 64-bit and/or benefit from the recent, faster MIPS
  195.      processors.  How do I build GLUT to support these newer
  196.      application binary interfaces (ABIs)?
  197. A10: See README.irix6
  198. --
  199. Q11: I'd like to write FORTRAN programs using GLUT and OpenGL.  How
  200.      do I use GLUT with FORTRAN?
  201. A11: GLUT does have a FORTRAN language binding.
  202.      For instructions for building a binding library for Silicon
  203.      Graphics workstations, see README.fortran
  204.      If you want to use GLUT and OpenGL or Mesa on with Fortran on
  205.      non-SGI systems, I recommend that you check, William Mitchell's
  206.      f90gl home page: http://math.nist.gov/f90gl/
  207. --
  208. Q12: I'd like to use the sophisticated input devices that GLUT
  209.      supports.  What should I know about this?
  210. A12: GLUT uses the X Input extension to talk to these devices.  Because
  211.      the X Input extension gives a framework for supporting input
  212.      devices, but does not manadate how particular devices are
  213.      supported, it is possible that each vendor supports the same input
  214.      devices differently.
  215.      GLUT as implemented supports SGI's means of advertising the
  216.      tablet, dial & button box, and Spaceball devices.  I am not sure
  217.      how other vendors support these devices.  For the details of SGI's
  218.      support for these devices, see README.xinput  Since there is no
  219.      benefit in each vendor supporting these same devices in a
  220.      different an incompatible way, I encourage other vendors to
  221.      implement their devices in this same manner.
  222. --
  223. Q13: Can I use GLUT and Open Inventor?
  224. A13: Yes.  See the README.inventor file.  Also, some source code
  225.      examples can be found at progs/inventor
  226.      Because the Open Inventor development enviornment is not supported
  227.      on all systems, the Inventor example programs are not built by
  228.      default, and the Makefile there only support SGI systems.
  229. --
  230. Q14: I have Sun workstation, and it is supposed to support overlays.
  231.      So why does GLUT not use them?
  232. A14: GLUT uses the SERVER_OVERLAY_VISUALS convention that advertises
  233.      overlay visuals.  Most major workstation vendors support this
  234.      convention (DEC, HP, IBM, SGI), but Sun only support the
  235.      SERVER_OVERLAY_VISUALS in their latest Creator 3D hardware.
  236. --
  237. Q15: The stroke font used for GLUT looks familar.  Where did it come
  238.      from?
  239. A15: The data for the "stroke roman" font is lifted from the X11R5
  240.      PEX sample implementation.
  241. --
  242. Q16: I read in the NOTICE file that you are writing a book on
  243.      programming OpenGL for the X Window System.  Where can I get it?
  244. A16: My book titled "Programming OpenGL for the X Window System" was
  245.      released in August of 1996.  The book is published by
  246.      Addison-Wesley and the ISBN is 0-201-48359-9.  If you have seen
  247.      the "red" and "blue" OpenGL books, this book looks very similar,
  248.      but has a green cover.  More information can be found at:
  249.        http://reality.sgi.com/mjk_asd/OpenGLforX.html
  250.        http://aw.com/devpress/titles/48359.html
  251.      The book includes a tutorial chapter introducing the entire GLUT
  252.      API.  Another chapter uses GLUT-based examples to explain various
  253.      OpenGL rendering features.  An appedix describes the GLUT API
  254.      in detail.  If you use GLUT, this book will be very helpful.
  255.      A Japanese translation is also available now (ISBN4-7952-9703-7).
  256. --
  257. Q17: You mention an unnamed bu "very large window system software
  258.      vendor" as the reason portable GLUT programs should not directly
  259.      include <GL/gl.h> and <GL/glu.h> directly.  What's the vendor and
  260.      what are the details?
  261. A17: Microsoft.  It's version of <GL/gl.h> requires <windows.h> to be
  262.      included before <GL/gl.h> can be included because of Microsoft
  263.      function declaration conventions.  Sigh.
  264. --
  265. Q18: I want my GLUT program to read and send information over a socket
  266.      to some other program.  How do I do this in in GLUT?
  267. A18: You can not do it currently.  I am considering such support for
  268.      a possible GLUT 4.0.  I'd like to have a portable solution.
  269.      What you'd like is a callback that would tell you when a socket is
  270.      ready for reading and writing.  I'm hoping to find a way to
  271.      support this in an operating system independent manner.  Does
  272.      anyone know of a good portable interface for networked bytestream
  273.      connections?
  274.      For now, you've got the source code to GLUT and you could hack it
  275.      into GLUT for whatever particular interface your operating system
  276.      provides.
  277. --
  278. Q19: Where's the best place to ask questions about GLUT or OpenGL?  Can
  279.      I just email them to you?
  280. A19: While I may try to return email if I have time, the best place
  281.      is the comp.graphics.api.opengl newsgroup.  This gives a lot more
  282.      people a chance to answer your question and you'll probably get an
  283.      answer much faster than sending me email.  Plus, I may not know
  284.      the answer though someone on the "net" may know it.
  285. --
  286. Q20: My workstation doesn't have OpenGL.  Where can I get a free copy
  287.      to use with GLUT?
  288. A20: OpenGL is licensed by Silicon Graphics and is not available as
  289.      "free" or "public domain" software, but workstation vendors
  290.      typically bundle OpenGL software with their workstation.  However,
  291.      there is a package called Mesa written by Brian Paul at the
  292.      University of Wisconsin that implements the OpenGL API.  (To be
  293.      branded as "OpenGL", an implementation must be licensed _and_ pass
  294.      the Architectural Review Board's conformance suite, so Mesa is not
  295.      an official "OpenGL" implementation.)  Mesa does work with GLUT.
  296.      Mesa 2.5 and beyond include GLUT with the Mesa source code
  297.      distribution.
  298. --
  299. Q21: I hear GLUT 3.0 has overlay support.  Where is an example?
  300. A21: Look at progs/examples/zoomdino.c for an example of using overlays
  301.      for rubber-banding and display of a help message, both in the
  302.      overlays.  Also, test/over_test.c exercises all of the overlay
  303.      routines.
  304. --
  305. Q22: I get BadMatch X protocol errors when I run GLUT programs. What gives?
  306. A22: There is a bug in the Solaris 2.4 and 2.5 implementation of
  307. XmuLookupStandardColormap (fixed in Solaris 2.6). When you compile GLUT
  308. on Solaris 2.4 or 2.5, please apply the following patch and compile
  309. with -DSOLARIS_2_4_BUG to workaround the problem. See the comment in
  310. the patch below.  This code is already in GLUT 3.1.
  311. *** glut_win.c Wed Apr 24 14:06:08 1996
  312. --- glut_win.c.bad     Wed Apr 24 14:03:58 1996
  313. ***************
  314. *** 398,414 ****
  315.     case TrueColor:
  316.     case DirectColor:
  317.       *colormap = NULL;   /* NULL if RGBA */
  318. - #ifndef SOLARIS_2_4_BUG
  319. -     /* Solaris 2.4 has a bug in its XmuLookupStandardColormap
  320. -        implementation.  Please compile your Solaris 2.4 version 
  321. -        of GLUT with -DSOLARIS_2_4_BUG to work around this bug.
  322. -        The symptom of the bug is that programs will get a
  323. -        BadMatch error from X_CreateWindow when creating a GLUT
  324. -        window because Solaris 2.4 creates a  corrupted
  325. -        RGB_DEFAULT_MAP property.  Note that this workaround
  326. -        prevents Colormap sharing between applications, perhaps
  327. -        leading unnecessary colormap installations or colormap
  328. -        flashing. */
  329.       status = XmuLookupStandardColormap(__glutDisplay,
  330.         vi->screen, vi->visualid, vi->depth, XA_RGB_DEFAULT_MAP,
  331.         /* replace */ False, /* retain */ True);
  332. --- 398,403 ----
  333. ***************
  334. *** 423,429 ****
  335.               return;
  336.             }
  337.       }
  338. - #endif
  339.       /* If no standard colormap but TrueColor, just make a
  340.          private one. */
  341.       /* XXX Should do a better job of internal sharing for
  342. --- 412,417 ----
  343. --
  344. Q23:  What is new in GLUT 3.1?
  345. A23:  GLUT 3.1 is largely a maintence release.  There are some new programs, a
  346.       few minor GLUT library bug fixes, but mostly GLUT 3.1 is to make sure GLUT
  347.       builds cleanly on various platforms like SunOS, HP/UX, Solaris, and Linux.
  348.       See the CHANGES file included in the distribution for more details.
  349. --
  350. Q24:  How do I make Linux shared libraries for GLUT?
  351. A24:  Peter F. Martone (pmarton@mailbox.bgsu.edu) has written some
  352.       instructions for making a Linux shared library for GLUT. You can grab
  353.       the instructions for doing so from
  354.       http://pizza.bgsu.edu/cgi-bin/cgiwrap/~pmarton/makeMainIndex
  355. --
  356. Q25:  What is new in GLUT 3.2?
  357. A25:  Like GLUT 3.1, GLUT 3.2 is a maintence release.  Along with bug
  358.       fixes to the core GLUT library, many new GLUT example programs
  359.       have been added.  The portability of the examples has been
  360.       improved so that most should build using Windows 95 and NT. 
  361.       Also, GLUT API man pages are now included.  See the CHANGES file
  362.       included in the distribution for more details.
  363. --
  364. Q26:  I've heard GLUT 3.2 has man pages.  How do I use them?
  365. A26:  Please see the README.man file for details.  The easiest way for
  366.       SGI users to get the man pages is to install the "glut_dev.man.glut"
  367.       subsystem included with the pre-compiled SGI GLUT images.
  368. --
  369. Q27:  What is the MESA_SWAP_HACK in GLUT 3.2?  How does it help Mesa
  370.       users avoid excessive window redraws?
  371. A27:  The GLX specification states that the state of a window's back
  372.       color buffer after a glXSwapBuffers is undefined.  However, the
  373.       freeware Mesa implementation of the OpenGL API always leaves
  374.       the back buffer with its previous contents (ie, it simply
  375.       "copies" the back buffer contents to the front buffer).
  376.       Because Mesa lacks hardware acceleration and is often slow to
  377.       redraw a window, this presents the opportunity to speed
  378.       redrawing a window damaged by window system interactions by
  379.       simply calling glXSwapBuffers again.
  380.       If you set the MESA_SWAP_HACK enviornment variable, GLUT 3.2
  381.       will try to repair double buffered windows not otherwise
  382.       needing a redisplay because of glutPostRedisplay by calling
  383.       glXSwapBuffers when Mesa is the OpenGL implementation being
  384.       used and the last display callback called glutSwapBuffers.
  385.       In general, this means if you see MESA_SWAP_HACK when using
  386.       Mesa, double buffered GLUT programs will redraw very quickly
  387.       after being damaged but still operate well if they've been
  388.       correctly written to use glutPostRedisplay to trigger
  389.       application required redraws.
  390.       I encourage all Mesa users to set the MESA_SWAP_HACK environment
  391.       variable. 
  392. --
  393. Q28:  I try to run the examples in progs/advanced but they don't work
  394.       for lack of image files.  Where can I get those files?
  395. A28:  Yes, the image files these examples use are large and were
  396.       seperated out from the main GLUT source code distribution.
  397.       Get the glut_data.tar.gz file from where you got your
  398.       GLUT distribution.  Untar these data files over your glut
  399.       distribution so the "data" directory is at the same level
  400.       as "progs".  Then do a "make links" in the progs/advanced
  401.       directory to make symbolic links.
  402.       See the progs/advanced/README file for more details.
  403. --
  404. Q29:  Why doesn't GLUT programs compiled on IRIX 6.4 or 6.3 work
  405.       earlier releases?
  406. A29:  First, SGI never guarantees that an executable built on a later
  407.       IRIX release will work on an earlier release. Sometimes it works;
  408.       more often than not it does not. GLUT takes advantage of a new X
  409.       optimization in IRIX 6.3 called "fast atoms". This optimization
  410.       lets X clients determine common atom values without an X server
  411.       round-trip.  This helps X performance.
  412.       If you compile the GLUT library on an IRIX 6.3 or IRIX 6.4
  413.       machine, the library will support fast atoms. This will mean that
  414.       if you run executables linked against the "fast atom enabled"
  415.       version of the GLUT library, you'll get a run-time link error
  416.       saying something like:
  417.       17062:glut_example: rld: Fatal Error: attemped access to
  418.       unresolvable symbol in projtex: _XSGIFastInternAtom
  419.       Do not be alarmed. If you want, you can recompile the GLUT
  420.       library with the -DNO_FAST_ATOMS and get a version of the library
  421.       that doesn't have the support so that GLUT executables built with
  422.       a library compiled without "fast atoms" can work on earlier IRIX
  423.       releases. Note that even if you do compile with -DNO_FAST_ATOMS,
  424.       there is still no guarantee that an IRIX executable compiled on a
  425.       newer release will actually work on an older release (but at
  426.       least you'll have a chance!).
  427.       Note that the precompiled images lack "fast atoms" support so
  428.       they will work fine with IRIX releases before IRIX 6.3 and 6.4.
  429. --
  430. Q30:  Can I get a version of GLUT for the Power Macintosh?
  431. A30:  Conix Graphics has released a port of GLUT
  432.       3.2 I believe.  Try checking the Conix Graphics web site
  433.       http://www.conix3d.com for current info.
  434. --
  435. Q31:  What is new in GLUT 3.4?
  436. A31:  GLUT 3.4 is an incremental release. An Ada binding for SGI
  437.       machines is included along with an Ada example.  Many new sample
  438.       programs. Several such as dinoshade.c demonstrate real-time
  439.       rendering techniques relevant for games. Examples using Sam
  440.       Leffler's libtiff library for loading, drawing and writing TIFF
  441.       image files. GLUT version of the facial animation "geoview"
  442.       decibed in the Parke and Water's book "Computer Facial
  443.       Animation". New API interfaces to be made part of the GLUT 4 API
  444.       update (not yet fully finalized though). glutInitDisplayMode for
  445.       example. Improved portability and a few bug fixes.
  446. --
  447. Q32:  I installed SGI's Cosmo3D beta and GLUT, and I'm having problems
  448.       compiling GLUT programs.  What gives?
  449. A32:  Unfortunately, SGI's Cosmo3D beta images install a DSO for GLUT
  450.       (libglut.so) that does not fully implement the GLUT API and lacks
  451.       some of the newer GLUT 3.4 entrypoints as well.  The problem is
  452.       that a DSO takes preferenc over an archive when you compile with
  453.       an option like "-lglut".  While the Cosmo3D beta installs a
  454.       libglut.so, my GLUT distribution and images only build and
  455.       install an archive.  There are a couple of solutions:
  456.       1)  Explicitly link your GLUT programs with libglut.a (the
  457.   archive version of GLUT).  For example, put "/usr/lib/libglut.a"
  458.   on your compile line instead of "-lglut".
  459.       2)  You can convert the GLUT 3.4 archive into a DSO:
  460.     su
  461.     cd /usr/lib
  462.     mv libglut.so libglut.so.cosmo
  463.     cc -32 -o libglut.so -shared -all libglut.a
  464.     cd /usr/lib32
  465.     mv libglut.so libglut.so.cosmo
  466.     cc -n32 -o libglut.so -shared -all libglut.a
  467.   The new DSO generated from the GLUT 3.4 DSO should be
  468.   compatible with the old Cosmo version.  This will mean that
  469.   all the GLUT programs you build will need the libglut.so on
  470.   the machine they run on.
  471.       3)  Remove the Cosmo3D beta.
  472. --
  473. Q33:  What is new in GLUT 3.5?
  474. A33:  The most significant change with GLUT 3.5 is unifying the X
  475.       Window System and Win32 versions of GLUT into a single source
  476.       code distribution.  Henk Kok contributed several cool new demos
  477.       (rollercoaster, chess, opengl_logo). All the demos build cleanly
  478.       under Win32. Lots of bug fixes.  Interesting new OpenGL rendering
  479.       techniques are demonstrated in a number of new examples:
  480.       movelight, dinoshade, halomagic, rendereps, movelight, shadowfun,
  481.       torus_test, underwater, texfont, reflectdino.
  482. --
  483. Q34:  How do I use the precompiled Win32 GLUT DLLs with Borland compilers?
  484. A34:  The "implib" command should let you generate a GLUT.LIB that works
  485.       with Borland compilers from the precompiled GLUT.DLL  Here is an
  486.       example:
  487.         C:>implib -f C:GLUTLIBGLUT.LIB C:WINDOWSSYSTEMGLUT.DLL
  488.       After this, then link C:GLUTLIBGLUT.LIB to your project
  489.       Likewise, for the Microsoft GLUT32.DLL:
  490.       
  491.         C:>implib -f C:GLUTLIBGLUT32.LIB C:WINDOWSSYSTEMGLUT32.DLL
  492.       Suggested by Carter <carter@extremezone.com>.
  493.       The "-f" option is suggested by Kris Matson <matson@eos.ncsu.edu>.
  494. --
  495. Q35:  Are there any C++ wrappers for GLUT?
  496. A35:  Yes, George Stetten (stetten@acpub.duke.edu) of Duke University has
  497.       made available the GlutMaster C++ wrapper classes.  See:
  498. http://www.duke.edu/~stetten/GlutMaster/GlutMaster.html
  499. http://www.duke.edu/~stetten/GlutMaster/README.txt
  500. --
  501. Q36:  How do you avoid the Console window appearing when you compiler a
  502.       Win32 GLUT application with Microsoft compilers?
  503. A36:  Try using the following Microsoft Visual C compiler flags:
  504. /SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup
  505.       These are linker options... if main or wmain are defined, MSVC
  506.       build a CONSOLE app by default; hence the need for
  507.       /SUBSYSTEM:WINDOWS. if /SUBSYSTEM:WINDOWS is defined, MSVC
  508.       expects WinMain or wWinMain to be defined; hence the need to
  509.       /ENTRY:mainCRTStartup (eg the entry point is the usual C main).
  510.       stdout/stderr are [apparently] not "attached"; output via printf
  511.       is simply "eaten" unless redirected at the command-line or by a
  512.       parent program.
  513.       Information thanks to Jean-David Marrow (jd@riverbed.com).
  514. --
  515. Q37:  What is new in GLUT 3.6?
  516. A37:  GLUT 3.6 adds/improves the following:
  517.       o  Win32 GLUT performance improvements.
  518.       o  Win32 GLUT confromance improvements.
  519.       o  Linas Vepstas's GLE Tubing & Extrusions Library is
  520.  included with GLUT, including nroff man pages and
  521.  demo programs.
  522.       o  More GLUT-based OpenGL demos and examples (and bug
  523.  fixes to existing demos and examples).
  524.       o  glutPostWindowRedisplay and glutPostWindowOverlayRedisplay
  525.  entry points added for posting redisplays on non-current
  526.  windows (for faster multi-window updates).
  527.       o  Bug fixes and minor functionality improvements to Tom Davis's
  528.  micro-UI GLUT-based user interface toolkit.
  529.       See the "CHANGES" file that accompanies GLUT 3.6 for a fuller
  530.       list of changes.
  531. --
  532. Q38:  On my IRIX 6.3 SGI O2 workstation, why do I get errors about
  533.       "glXChannelRectSyncSGIX" being unresolved building certain GLUT
  534.       examples?
  535. A38:  The original IRIX 6.3 release for the O2 workstation accidently
  536.       advertised support for the dynamic video resize extension supported
  537.       on SGI's high-end InfiniteReality graphics system.  This confuses
  538.       GLUT into providing its dynamic video resize sub-API.
  539.       This problem is fixed by patch 1979 (and its successor patches).
  540.       Because patch 1979 (and its successor patches) also help O2's
  541.       OpenGL rendering performance, I strongly recommend requesting
  542.       the latest O2 OpenGL patch from SGI customer support.
  543.       Once the patch is installed, your build errors will be resolved.
  544. --
  545. Q39:  Using GLUT with Microsoft OpenGL 1.1 and compiling GLUT with
  546.       Borland compilers causes GLUT applications to generates floating
  547.       point exceptions.  What can be done?
  548. A39:  Under certain conditions (e.g. while rendering solid surfaces
  549.       with lighting enabled) MS libraries cause some illegal operations
  550.       like floating point overflow or division by zero. The default
  551.       behaviour of Microsoft compilers is to mask (ignore) floating
  552.       point exceptions, while Borland compilers do not.  A function of
  553.       Borland run-time library allows to mask exceptions.  Modify
  554.       glut_init.c by adding the following lines to the function
  555.       __glutOpenWin32Connection.
  556. #ifdef __BORLANDC__
  557. #include <float.h>
  558.   _control87(MCW_EM,MCW_EM);
  559. #endif
  560.       With this modification, compiling the GLUT library with your
  561.       Borland compilers and using GLUT with Microsoft OpenGL should
  562.       work fine.
  563.       GLUT 3.7 will have this change already included in the GLUT
  564.       library source code distribution.
  565.       This advice comes from Pier Giorgio Esposito (mc2172@mclink.it).
  566. --
  567. Q40:  Using GLUT with SGI OpenGL for Windows and compiling with
  568.       Borland compilers results in linking problems.  What can be
  569.       done?
  570. A40:  Some care must be taken when linking GLUT.DLL or programs
  571.       that use it with Borland compilers.  The import library
  572.       IMPORT32.LIB already contains the functions exported by
  573.       the Microsoft OpenGL libraries, thus SGI OpenGL import
  574.       libraries must be listed _before_ import32 in the Borland
  575.       tlink command line.
  576.       This advice comes from Pier Giorgio Esposito (mc2172@mclink.it).
  577. --
  578. Q41:  What is GameGLUT?
  579. A41:  GameGLUT is a set of API extension to GLUT to be released in
  580.       GLUT 3.7.  These extensions provide keyboard release callbacks,
  581.       disabling of keyboard auto repeat, joystick callbacks, and full
  582.       screen resolution setting.
  583. --
  584. Q42:  I use a callback registered with "atexit" to clean up my temporary
  585.       files and stuff.  Under Windows, my atexit callback is not being
  586.       called if you quit by application by clicking the X box or using
  587.       the Windows Close border menu.  What gives?
  588. Q42:  Windows has multiple C run-time libraries (CRTs).  The GLUT.DLL
  589.       is linked against the MSVCRT.LIB CRT (for multi-threaded, DLL
  590.       programs).  The OPENGL.DLL and GLU.DLL libraries are also linked
  591.       with MSVCR.LIB.  By default, the Visual C++ compiler links with
  592.       the LIBC.LIB CRT (for single-threaded, non-DLL programs).
  593.       Static data in one CRT is not shared with other CRTs in the
  594.       Win32 environment.  In general, mixing CRTs in a single program
  595.       is bad.  In particular, an atexit callback registered with one
  596.       CRT will not be called when the exit routine of another CRT is
  597.       called.
  598.       The "/MD" option forces use of the MSVCRT.LIB (the one GLUT.DLL is
  599.       linked with).  If you use the "/MD" option, then atexit callbacks
  600.       should occur just fine even if you application exits through a
  601.       GLUT fatal error or the user exits from the Windows close border
  602.       or clicks the X button.
  603.       Do not use the "/ML" or "/MT" options when linking GLUT programs
  604.       under Win32.  The options link with the LIBC.LIB and LIBCMT.LIB
  605.       libraries respectively.
  606.       Be aware you can also link with these libraries explicitly (instead
  607.       of using the options) by putting LIBC.LIB or LIBCMT.LIB on your
  608.       command line.  Avoid this practice since it will also cause
  609.       problems.
  610. --
  611. Q43:  My Unix GLUT program has a variable named "select".  When I run
  612.       my program it crashes on startup in code that is not mine.
  613.       What gives?
  614. Q43:  There is a Unix system call called "select" that is used by both
  615.       the GLUT library and the Xlib library.  If you name a variable
  616.       "select", the linker will pre-empt the C library version of select
  617.       with your variable.  When GLUT or Xlib try to call the "select"
  618.       routine, they jump to your data instead and crash your application.
  619.       The crash will be deep in GLUT or Xlib and this will likely be
  620.       very confusing.
  621.       Rename your variable to a different name, and the problem will
  622.       be fixed.
  623.       Note that other names such as "connect", "socket", "read", and
  624.       "write" will cause similiar problems if used as variable names or
  625.       routine names in GLUT programs.  If in doubt, try doing "man XXX"
  626.       where XXX is the suspicious variable name.  If you get the manual
  627.       page for a C library function, pick another name.
  628. --
  629. Q44:  I use Imakefiles to build GLUT.  How do I make shared/debug/profiling
  630.       versions of the various GLUT libraries?
  631. A44:  This is much easier as of GLUT 3.7.  Now, just edit the various
  632.       GLUT library Imakefiles (that is "lib/*/Imakefile") and set the
  633.       lines to say:
  634. #define DoNormalLib   YES
  635. #define DoSharedLib   YES
  636. #define DoDebugLib    YES
  637. #define DoProfileLib  YES
  638.       Change any of these to "NO" if you don't want the respective
  639.       type of library built.
  640.       The do:
  641.          cd lib
  642.  make clean
  643.  make Makefiles
  644.  make depend
  645.  make clean
  646.  make
  647.       That's all there is to it.  If you have problems with this procedure,
  648.       the most likely cause is that your Imake configuration files do not
  649.       have the appropriate rules for your compiler for building
  650.       shared/debug/profiling libraries.
  651.       Check your Library.tmp file (often found in
  652.       /usr/lib/X11/config/Library.tmpl) if you have problems.
  653.       (The previous README.linux and README.ibm-shlib files are
  654.       deprecated in favor of the advise above.)
  655. --
  656. - Mark