[1648] | 1 |
|
---|
| 2 |
|
---|
| 3 | GLUT for Win32 README
|
---|
| 4 | ---------------------
|
---|
| 5 |
|
---|
| 6 |
|
---|
| 7 | VERSION/INFO:
|
---|
| 8 |
|
---|
| 9 | This is GLUT for Win32 version 3.7.6 as of Nov 8th 2001.
|
---|
| 10 | See the COPYRIGHT section for distribution and copyright notices.
|
---|
| 11 | Send all bug reports and questions for this version of GLUT to
|
---|
| 12 | Nate Robins [nate@pobox.com].
|
---|
| 13 |
|
---|
| 14 | For more information about GLUT for Win32, see the web page:
|
---|
| 15 | www.pobox.com/~nate/glut.html or subscribe to the GLUT for Win32
|
---|
| 16 | mailing list by sending e-mail to majordomo@perp.com with
|
---|
| 17 | "subscribe glut" in the body of the message.
|
---|
| 18 |
|
---|
| 19 | For general information about GLUT, see the GLUT web page:
|
---|
| 20 | http://reality.sgi.com/opengl/glut3/glut3.html and be sure to
|
---|
| 21 | check the GLUT FAQ first for any questions that you may have:
|
---|
| 22 | http://reality.sgi.com/opengl/glut3/glut-faq.html
|
---|
| 23 |
|
---|
| 24 |
|
---|
| 25 | COMPILING/INSTALLATION:
|
---|
| 26 |
|
---|
| 27 | o Precompiled versions of the DLL and import library can be
|
---|
| 28 | found on the GLUT for Win32 web page mentioned above.
|
---|
| 29 |
|
---|
| 30 | o Microsoft Developer Studio 6 workspace and project files have
|
---|
| 31 | been included in the source code distribution.
|
---|
| 32 |
|
---|
| 33 | To build the glut dll:
|
---|
| 34 | First, open Microsoft Developer Studio.
|
---|
| 35 | Then, select File -> Open Workspace and find the glut.dsw file
|
---|
| 36 | in the file dialog and double-click on it.
|
---|
| 37 | Finally, select Build -> Build glut32.dll.
|
---|
| 38 | When the build is finished, it will copy:
|
---|
| 39 | glut32.dll to %WinDir%\System,
|
---|
| 40 | glut32.lib to $(MSDevDir)\..\..\VC98\lib, and
|
---|
| 41 | glut.h to $(MSDevDir)\..\..\VC98\include\GL.
|
---|
| 42 |
|
---|
| 43 | Additional workspace files have been included in the progs, test
|
---|
| 44 | and lib directories to build the progs, tests and libs respectively.
|
---|
| 45 |
|
---|
| 46 |
|
---|
| 47 | BORLAND NOTES:
|
---|
| 48 |
|
---|
| 49 | From what I understand, Borland supplies a utility that
|
---|
| 50 | converts Microsoft Visual C++ .libs into Borland compatible
|
---|
| 51 | files. Therefore, the best method for Borland users is
|
---|
| 52 | probably to get the precompiled versions of the library and
|
---|
| 53 | convert the library. To create an import library for Borland
|
---|
| 54 | from the DLLs, use the following command (from a command prompt):
|
---|
| 55 | IMPLIB glut32.lib glut32.dll
|
---|
| 56 | If IMPLIB crashes when called this way, try
|
---|
| 57 | IMPLIB glut32.lib glut32.def
|
---|
| 58 | using the glut32.def file in this distribution.
|
---|
| 59 |
|
---|
| 60 |
|
---|
| 61 | FORTRAN NOTES:
|
---|
| 62 |
|
---|
| 63 | Bill Mitchell [william.mitchell@nist.gov] has put considerable
|
---|
| 64 | effort into getting GLUT to work with different compilers for
|
---|
| 65 | Fortran 90. He indicates that you should copy the f90glut.h
|
---|
| 66 | file to your $(MSDevDir)\..\..\VC98\include\GL directory.
|
---|
| 67 | Then, just build GLUT as usual. The Fortran 90 interface, f90gl,
|
---|
| 68 | can be obtained at http://math.nist.gov/f90gl and contains
|
---|
| 69 | installation instructions and usage examples.
|
---|
| 70 |
|
---|
| 71 |
|
---|
| 72 | MISC NOTES:
|
---|
| 73 |
|
---|
| 74 | o Overlay support is not implemented, nor are there any plans to
|
---|
| 75 | implement it in the near future.
|
---|
| 76 |
|
---|
| 77 | o To customize the windows icon, you can use the resource name
|
---|
| 78 | GLUT_ICON. For example, create an icon named "glut.ico", and
|
---|
| 79 | create a file called glut.rc that contains the following:
|
---|
| 80 | GLUT_ICON ICON glut.ico
|
---|
| 81 | then compile the glut.rc file with the following:
|
---|
| 82 | rc /r glut
|
---|
| 83 | and link the resulting glut.res file into your executable
|
---|
| 84 | (just like you would an object file).
|
---|
| 85 | Alternatively, you can simply add the glut.rc file to your
|
---|
| 86 | project if you are using Microsoft Developer Studio.
|
---|
| 87 |
|
---|
| 88 |
|
---|
| 89 | IMPLEMENTATION DEPENDENT DIFFERENCES:
|
---|
| 90 |
|
---|
| 91 | There are a few differences between the Win32 version of GLUT
|
---|
| 92 | and the X11 version of GLUT. Those are outlined here. Note
|
---|
| 93 | that MOST of these differences are allowed by the GLUT
|
---|
| 94 | specification. Bugs and unsupported features are outlined in
|
---|
| 95 | the UNSUPPORTED/BUGS section.
|
---|
| 96 |
|
---|
| 97 | o glutInit:
|
---|
| 98 | The following command line options have no meaning (and are
|
---|
| 99 | ignored) in GLUT for Win32:
|
---|
| 100 | -display, -indirect, -direct, -sync.
|
---|
| 101 |
|
---|
| 102 | o glutInitWindowPosition, glutPositionWindow:
|
---|
| 103 | Win32 has two different coordinate systems for windows.
|
---|
| 104 | One is in terms of client space and the other is the whole
|
---|
| 105 | window space (including the decorations). If you
|
---|
| 106 | glutPositionWindow(0, 0), GLUT for Win32 will place the
|
---|
| 107 | window CLIENT area at 0, 0. This will cause the window
|
---|
| 108 | decorations (title bar and left edge) to be OFF-SCREEN, but
|
---|
| 109 | it gives the user the most flexibility in positioning.
|
---|
| 110 | HOWEVER, if the user specifies glutInitWindowPosition(0, 0),
|
---|
| 111 | the window is placed relative to window space at 0, 0.
|
---|
| 112 | This will cause the window to be opened in the upper left
|
---|
| 113 | corner with all the decorations showing. This behaviour is
|
---|
| 114 | acceptable under the current GLUT specification.
|
---|
| 115 |
|
---|
| 116 | o glutSetIconTitle, glutSetWindowTitle:
|
---|
| 117 | There is no separation between Icon title and Window title
|
---|
| 118 | in Win32. Therefore, setting an icon title in Win32 has
|
---|
| 119 | no effect.
|
---|
| 120 |
|
---|
| 121 | o glutSetCursor:
|
---|
| 122 | As indicated in the GLUT specification, cursors may be
|
---|
| 123 | different on different platforms. This is the case in GLUT
|
---|
| 124 | for Win32. For the most part, the cursors will match the
|
---|
| 125 | meaning, but not necessarily the shape. Notable exceptions
|
---|
| 126 | are the GLUT_CURSOR_INFO & GLUT_CURSOR_SPRAY which use the
|
---|
| 127 | crosshair cursor and the GLUT_CURSOR_CYCLE which uses the
|
---|
| 128 | 'no' or 'destroy' cursor in Win32.
|
---|
| 129 |
|
---|
| 130 | o glutVisibilityFunc:
|
---|
| 131 | Win32 seems to be unable to determine if a window is fully
|
---|
| 132 | obscured. Therefore, the visibility of a GLUT window is
|
---|
| 133 | only reflected by its Iconic, Hidden or Shown state. That
|
---|
| 134 | is, even if a window is fully obscured, in GLUT for Win32,
|
---|
| 135 | it is still "visible".
|
---|
| 136 |
|
---|
| 137 | o glutEntryFunc:
|
---|
| 138 | Window Focus is handled differently in Win32 and X.
|
---|
| 139 | Specifically, the "window manager" in Win32 uses a "click to
|
---|
| 140 | focus" policy. That is, in order for a window to receive
|
---|
| 141 | focus, a mouse button must be clicked in it. Likewise, in
|
---|
| 142 | order for a window to loose focus, a mouse button must be
|
---|
| 143 | clicked outside the window (or in another window).
|
---|
| 144 | Therefore, the Enter and Leave notification provided by GLUT
|
---|
| 145 | may behave differently in the Win32 and in X11 versions.
|
---|
| 146 | There is a viable workaround for this. A program called
|
---|
| 147 | "Tweak UI" is provided by Microsoft which can be used to
|
---|
| 148 | change the focus policy in Win32 to "focus follows mouse".
|
---|
| 149 | It is available from the Microsoft Web Pages:
|
---|
| 150 | http://www.microsoft.com/windows/software/PowerToy.htm
|
---|
| 151 |
|
---|
| 152 | o glutCopyColormap:
|
---|
| 153 | GLUT for Win32 always copies the colormap. There is never
|
---|
| 154 | any sharing of colormaps. This is probably okay, since
|
---|
| 155 | Win32 merges the logical palette and the physical palette
|
---|
| 156 | anyway, so even if there are two windows with totally
|
---|
| 157 | different colors in their colormaps, Win32 will find a
|
---|
| 158 | (hopefully) good match between them.
|
---|
| 159 |
|
---|
| 160 | o glutIdleFunc + menus:
|
---|
| 161 | The glut idle function will NOT be called when a menu is
|
---|
| 162 | active. This causes all animation to stop when a menu is
|
---|
| 163 | active (in general, this is probably okay). Timer
|
---|
| 164 | functions will still fire, however. If the timer callback
|
---|
| 165 | draws into the rendering context, the drawing will not show
|
---|
| 166 | up until after the menu has finished, though.
|
---|
| 167 |
|
---|
| 168 |
|
---|
| 169 | UNSUPPORTED/BUGS:
|
---|
| 170 |
|
---|
| 171 | o glutAttachMenu:
|
---|
| 172 | Win32 only likes to work with left and right mouse buttons.
|
---|
| 173 | Especially so with popup menus. Therefore, when attaching
|
---|
| 174 | the menu to the middle mouse button, the LEFT mouse button
|
---|
| 175 | must be used to select from the menu.
|
---|
| 176 |
|
---|
| 177 | o glutSpaceball*, glutButtonBox*, glutTablet*, glutDials*:
|
---|
| 178 | None of the special input devices are supported at this
|
---|
| 179 | time.
|
---|
| 180 |
|
---|
| 181 | o When resizing or moving a GLUT for Win32 window, no updating
|
---|
| 182 | is performed. This causes the window to leave "tracks" on
|
---|
| 183 | the screen when getting bigger or when previously obscured
|
---|
| 184 | parts are being revealed. I put in a bit of a kludgy
|
---|
| 185 | workaround for those that absolutely can't have the weird
|
---|
| 186 | lines. The reshape callback is called multiple times for
|
---|
| 187 | reshapes. Therefore, in the reshape callback, some drawing
|
---|
| 188 | can be done. It should probably be limited to a color buffer
|
---|
| 189 | clear.
|
---|
| 190 |
|
---|
| 191 | o The video resizing capabilities of GLUT 3.3+ for X11 is
|
---|
| 192 | currently unimplemented (this is probably ok, since it
|
---|
| 193 | really isn't part of the spec until 4.0). I doubt that
|
---|
| 194 | this will ever be part of GLUT for Win32, since there is no
|
---|
| 195 | hardware to support it. A hack could simply change the
|
---|
| 196 | resolution of the desktop.
|
---|
| 197 |
|
---|
| 198 |
|
---|
| 199 | CHANGES/FIXES:
|
---|
| 200 |
|
---|
| 201 | (Nov 8, '01)
|
---|
| 202 | x Released 3.7.6
|
---|
| 203 |
|
---|
| 204 | (Nov 8, '01)
|
---|
| 205 | x Changed fullscreen mode from TOPMOST back to simply TOP, since
|
---|
| 206 | (it turns out) many people use windows atop a GLUT window.
|
---|
| 207 |
|
---|
| 208 | (Nov 8, '01)
|
---|
| 209 | x Added code to prevent CPU spiking when no idle function is
|
---|
| 210 | registered. Otherwise, if an idle function is registered, spike
|
---|
| 211 | CPU so that the idle function gets all the attention it needs and
|
---|
| 212 | if this is a problem on the program side, the user can stick a
|
---|
| 213 | sleep() in their idle function. I believe that this strikes the
|
---|
| 214 | best balance betweeen GLUT being fast, and also being "nice" to
|
---|
| 215 | other processes. Thanks to James Wright for reporting this bug.
|
---|
| 216 |
|
---|
| 217 | (Nov 8, '01)
|
---|
| 218 | x Fixed bug in motion callback handler which wasn't setting the
|
---|
| 219 | current window, so multiple window apps (e.g., any GLUI app)
|
---|
| 220 | wouldn't get the callback correctly.
|
---|
| 221 |
|
---|
| 222 | (Oct 4, '01)
|
---|
| 223 | x Fixed bug in glutEnterGameMode() that caused new windows to not
|
---|
| 224 | be in "fullscreen" mode, so they got window decorations.
|
---|
| 225 |
|
---|
| 226 | (Oct 4, '01)
|
---|
| 227 | x Fixed bug in glutEnterGameMode() that caused new windows to not
|
---|
| 228 | be in "fullscreen" mode, so they got window decorations.
|
---|
| 229 |
|
---|
| 230 | (Oct 3, '01)
|
---|
| 231 | x Fixed bug in getVisualInfoFromString(): visuals not reloaded on
|
---|
| 232 | display mode change. Reload visuals each time they are queried.
|
---|
| 233 | This fixes a problem with Win32 because the list of availabe Visuals
|
---|
| 234 | (Pixelformats) changes after a change in displaymode. The problem
|
---|
| 235 | occurs when switching to gamemode and back. Thanks to Michael
|
---|
| 236 | Wimmer for pointing this out & providing the fix.
|
---|
| 237 |
|
---|
| 238 | (Oct 3, '01)
|
---|
| 239 | x Fixed bug in XGetVisualInfo(): pixelformats enumerated incorrectly.
|
---|
| 240 | Passing 0 as a pixelformat index to DescribePixelFormat gives
|
---|
| 241 | unpredictible results (e.g., this fails on the Voodoo opengl32.dll
|
---|
| 242 | and always reports 0 as the last available pixelformat index).
|
---|
| 243 | Thanks to Michael Wimmer for pointing this out & providing the fix.
|
---|
| 244 |
|
---|
| 245 | (Oct 3, '01)
|
---|
| 246 | x Fixed bug in glXGetConfig(): pixelformats enumerated incorrectly. The
|
---|
| 247 | test was OpenGL support OR draw to window, but should be AND. Thanks
|
---|
| 248 | to Michael Wimmer for pointing this out & providing the fix.
|
---|
| 249 |
|
---|
| 250 | (Sep 28, '01)
|
---|
| 251 | x Fixed glutChangeToSubMenu()/glutChangeToMenuEntry() bug where if you
|
---|
| 252 | went back and forth between a submenu and a plain entry, the submenu
|
---|
| 253 | wouldn't be updated properly.
|
---|
| 254 |
|
---|
| 255 | (Sep 28, '01)
|
---|
| 256 | x glutSetIconTitle() is now a nop.
|
---|
| 257 |
|
---|
| 258 | (Sep 28, '01)
|
---|
| 259 | x glutFullScreen() now sets the window as TOPMOST, therefore, the
|
---|
| 260 | window will always be on top (this essentially disables alt-tabbing).
|
---|
| 261 |
|
---|
| 262 | (Sep 28, '01)
|
---|
| 263 | x The key repeat ignore flag is now honored correctly.
|
---|
| 264 |
|
---|
| 265 | (Sep 28, '01)
|
---|
| 266 | x Key presses are now reported more accurately and fully, in
|
---|
| 267 | particular, modified up events (i.e., SHIFT-2) are now reported
|
---|
| 268 | correctly.
|
---|
| 269 |
|
---|
| 270 | (Sep 28, '01)
|
---|
| 271 | x Subwindows nested arbitrarily deep get their keyboard callbacks
|
---|
| 272 | correctly now.
|
---|
| 273 |
|
---|
| 274 | (Sep 28, '01)
|
---|
| 275 | x Major rewrite of the window procedure code to clean it up and make
|
---|
| 276 | way for other bug fixes.
|
---|
| 277 |
|
---|
| 278 | (Sep 23, '01)
|
---|
| 279 | x Fixed noof example program to use RAND_MAX instead of assumed
|
---|
| 280 | max of 2147483647.0. (Now it looks _much_ better!)
|
---|
| 281 |
|
---|
| 282 | (Sep 22, '01)
|
---|
| 283 | x Fixed sunlight example program. globe.raw data file was corrupt,
|
---|
| 284 | added a new one.
|
---|
| 285 |
|
---|
| 286 | (Sep 22, '01)
|
---|
| 287 | x Fixed zcomposite example program to print message if overlay
|
---|
| 288 | support is not found (instead of crashing).
|
---|
| 289 |
|
---|
| 290 | (Jan 22, '01)
|
---|
| 291 | x Fixed malloc(0) bug in Win32 version of XGetVisualInfo. Thanks
|
---|
| 292 | to Kekoa Proudfoot for bringing this to my attention.
|
---|
| 293 |
|
---|
| 294 | (Dec 12, '00)
|
---|
| 295 | x Added data files for the advanced & advanced97 programs.
|
---|
| 296 |
|
---|
| 297 | (Dec 12, '00)
|
---|
| 298 | x Added Developer Studio 6 project and workspace files for pretty
|
---|
| 299 | much everything (the stuff left out was usually unix specific).
|
---|
| 300 |
|
---|
| 301 | (Dec 7, '00)
|
---|
| 302 | x Fixed several compilation problems & corrupt files. Thanks to
|
---|
| 303 | Alexander Stohr for bringing these to my attention and providing
|
---|
| 304 | detailed fixes.
|
---|
| 305 |
|
---|
| 306 | (Dec 6, '00)
|
---|
| 307 | x Fixed compiler support for lcc. Thanks to Gordon for bringing
|
---|
| 308 | this to my attention and debugging fixes.
|
---|
| 309 |
|
---|
| 310 | (Nov 8, '00)
|
---|
| 311 | x Fixed submenu problem (sometimes the menu callback was not
|
---|
| 312 | called for valid items). Thanks to Michael Keeley.
|
---|
| 313 |
|
---|
| 314 | (Oct 16, '00)
|
---|
| 315 | x Corrected corrupt duck.iv file. Thanks to Jon Willeke for finding
|
---|
| 316 | this problem.
|
---|
| 317 |
|
---|
| 318 | (Sept 27, '00)
|
---|
| 319 | x Fixed bug in processWorkList that could cause a hang. Thanks to
|
---|
| 320 | Bill Volz & Daniel Azuma.
|
---|
| 321 |
|
---|
| 322 | (Sept 26, '00)
|
---|
| 323 | x Added mui DLL project file (thanks to DMWeldy@ugsolutions.com).
|
---|
| 324 |
|
---|
| 325 | (Sept 9, '00)
|
---|
| 326 | x Fixed Delete key bug (crash when no keyboard callback was
|
---|
| 327 | registered, but a special key callback was). Thanks to
|
---|
| 328 | Kent Bowling (kent_bowling@hotmail.com) for finding this bug.
|
---|
| 329 |
|
---|
| 330 | (May 18, '00)
|
---|
| 331 | x Fixed subwindow keyboard callbacks.
|
---|
| 332 |
|
---|
| 333 | (May 22, '97)
|
---|
| 334 | o Menus don't work under Windows 95
|
---|
| 335 | x Fixed! Added a unique identifier to each menu item, and a
|
---|
| 336 | search function to grab a menu item given the unique identifier.
|
---|
| 337 |
|
---|
| 338 | (May 21, '97)
|
---|
| 339 | o A few minor bug fixes here and there.
|
---|
| 340 | x Thanks to Bruce Silberman and Chris Vale for their help with
|
---|
| 341 | this. We now have a DLL!
|
---|
| 342 |
|
---|
| 343 | (Apr 25, '97)
|
---|
| 344 | o DLL version of the library is coming (as soon as I figure out
|
---|
| 345 | how to do it -- if you know, let me know).
|
---|
| 346 | x Thanks to Bruce Silberman and Chris Vale for their help with
|
---|
| 347 | this. We now have a DLL!
|
---|
| 348 |
|
---|
| 349 | (Apr 24, '97)
|
---|
| 350 | x Added returns to KEY_DOWN etc messages so that the F10 key
|
---|
| 351 | doesn't toggle the system menu anymore.
|
---|
| 352 |
|
---|
| 353 | (Apr 7, '97)
|
---|
| 354 | o Palette is incorrect for modes other than TrueColor.
|
---|
| 355 | x Fixed this by forcing a default palette in modes that aren't
|
---|
| 356 | Truecolor in order to 'simulate' it. The applications
|
---|
| 357 | program shouldn't have to do this IMHO, but I guess we
|
---|
| 358 | can't argue with Microsoft (well, we can, but what good
|
---|
| 359 | will it do?).
|
---|
| 360 |
|
---|
| 361 | (Apr 2, '97)
|
---|
| 362 | x Added glut.ide file for Borland users.
|
---|
| 363 |
|
---|
| 364 | (Apr 2, '97)
|
---|
| 365 | x Fixed a bug in the WM_QUERYNEWPALETTE message. Wasn't
|
---|
| 366 | checking for a null colormap, then de-ref'd it. Oops.
|
---|
| 367 |
|
---|
| 368 | (Mar 13, '97)
|
---|
| 369 | o glutTimerFunc:
|
---|
| 370 | Currently, GLUT for Win32 programs busy waits when there is
|
---|
| 371 | an outstanding timer event (i.e., there is no select()
|
---|
| 372 | call). I haven't found this to be a problem, but I plan to
|
---|
| 373 | fix it just because I can't bear the thought of a busy wait.
|
---|
| 374 | x Added a timer event and a wait in the main loop. This fixes
|
---|
| 375 | the CPU spike.
|
---|
| 376 |
|
---|
| 377 | (Mar 11, '97)
|
---|
| 378 | x Fixed subwindow visibility. The visibility callback of
|
---|
| 379 | subwindows wasn't being called, now it is.
|
---|
| 380 |
|
---|
| 381 | (Mar 11, '97)
|
---|
| 382 | o glutGetHDC, glutGetHWND:
|
---|
| 383 | In order to support additional dialog boxes, wgl fonts, and
|
---|
| 384 | a host of other Win32 dependent structures, two functions
|
---|
| 385 | have been added that operate on the current window in GLUT.
|
---|
| 386 | The first (glutGetHDC) returns a handle to the current
|
---|
| 387 | windows device context. The second (glutGetHWND) returns
|
---|
| 388 | handle to the current window.
|
---|
| 389 | x Took these out to preserve GLUT portability.
|
---|
| 390 |
|
---|
| 391 | (Mar 11, '97)
|
---|
| 392 | x Fixed the glutWarpPointer() coordinates. Were relative to
|
---|
| 393 | the screen, now relative to window (client area) origin
|
---|
| 394 | (which is what they're supposed to be).
|
---|
| 395 |
|
---|
| 396 | (Mar 11, '97)
|
---|
| 397 | o glutCreateMenu, glutIdleFunc:
|
---|
| 398 | Menu's are modal in Win32. That is, they don't allow any
|
---|
| 399 | messages to be processed while they are up. Therefore, if
|
---|
| 400 | an idle function exists, it will not be called while
|
---|
| 401 | processing a menu.
|
---|
| 402 | x Fixed! I've put in a timer function that fires every
|
---|
| 403 | millisecond while a menu is up. The timer function handles
|
---|
| 404 | idle and timer events only (which should be the only
|
---|
| 405 | functions that are firing when a menu is up anyway).
|
---|
| 406 |
|
---|
| 407 | (Mar 7 '97)
|
---|
| 408 | x Fixed minor bugs tracked down by the example programs.
|
---|
| 409 |
|
---|
| 410 | (Mar 6, '97)
|
---|
| 411 | x Merged 3.3 GLUT for X11 into 3.2 GLUT for Win32. New code
|
---|
| 412 | structure allows for EASY merging!
|
---|
| 413 |
|
---|
| 414 | o In Win32, the parent gets the right to set the cursor of
|
---|
| 415 | any of its children. Therefore, a child windows cursor
|
---|
| 416 | will 'blink' between its cursor and its parent.
|
---|
| 417 | x Fixed this by checking whether the cursor is in a child
|
---|
| 418 | window or not.
|
---|
| 419 |
|
---|
| 420 | (Feb 28 '97)
|
---|
| 421 | o On initial bringup apps are getting 2 display callbacks.
|
---|
| 422 | x Fixed by the Fev 28 re-write.
|
---|
| 423 |
|
---|
| 424 | o Some multiple window (not subwindow) functionality is messed up.
|
---|
| 425 | See the sphere.exe program.
|
---|
| 426 | x Fixed by the Feb 28 re-write.
|
---|
| 427 |
|
---|
| 428 | o GLUT for Win32 supports color index mode ONLY in a paletted
|
---|
| 429 | display mode (i.e., 256 or 16 color mode).
|
---|
| 430 | x Fixed this in the re-write. If you can get a color index
|
---|
| 431 | visual (pixel format) you can use color index mode.
|
---|
| 432 |
|
---|
| 433 | (Feb 28 '97)
|
---|
| 434 | o Quite a few bugs (and incompatibilities) were being caused
|
---|
| 435 | by the structure that I used in the previous port of GLUT.
|
---|
| 436 | Therefore I decided that it would be best to "get back to
|
---|
| 437 | the roots". I re-implemented most of glut trying to stick
|
---|
| 438 | with the structure layed out by Mark. The result is a much
|
---|
| 439 | more stable version that passes ALL (!) (except overlay)
|
---|
| 440 | the tests provided by Mark. In addition, this new
|
---|
| 441 | structure will allow future enhancements by Mark to be
|
---|
| 442 | integrated much more quickly into the Win32 version. Also,
|
---|
| 443 | I'm now ordering the bugs in reverse, so that the most
|
---|
| 444 | recently fixed appear at the top of the list.
|
---|
| 445 |
|
---|
| 446 | (9/8/96)
|
---|
| 447 | o Changed the glutGetModifiers code to produce an error if not
|
---|
| 448 | called in the core input callbacks.
|
---|
| 449 |
|
---|
| 450 | (9/11/96)
|
---|
| 451 | o If the alt key is pressed with more than one other modifier key
|
---|
| 452 | it acts as if it is stuck -- it stays selected until pressed
|
---|
| 453 | and released again.
|
---|
| 454 | x Fixed.
|
---|
| 455 |
|
---|
| 456 | (9/12/96)
|
---|
| 457 | o When a submenu is attached to a menu, sometimes a GPF occurs.
|
---|
| 458 | Fixed. Needed to set the submenu before referencing it's members.
|
---|
| 459 |
|
---|
| 460 | o Kenny: Also, one little problem, I attached the menu to the
|
---|
| 461 | right-button, but when the left-button is pressed I detach
|
---|
| 462 | it to give the right-button new meaning; if I pop-up the menu and I
|
---|
| 463 | don't want to select anything, like most users, I click off of the
|
---|
| 464 | menu to make it disappear. When I do this, I get a GLUT error and
|
---|
| 465 | the program terminates because I am altering the menu attachment
|
---|
| 466 | from within the button press while the menu is active.
|
---|
| 467 | x Fixed. Needed to finish the menu when the user presses the button,
|
---|
| 468 | not just when a button is released.
|
---|
| 469 |
|
---|
| 470 | o GLUT for Win32 emulates a middle mouse button by checking if
|
---|
| 471 | both mouse buttons are down. This causes a lot of problems with
|
---|
| 472 | the menu and other multiple mouse button things.
|
---|
| 473 | x Fixed. No more middle mouse button emulation. Perhaps it would
|
---|
| 474 | be a good idea to emulate the middle mouse button (if not present)
|
---|
| 475 | with a key?
|
---|
| 476 |
|
---|
| 477 | (9/15/96)
|
---|
| 478 | o Added code to accept a user defined icon. If no icon is provided,
|
---|
| 479 | a default icon is loaded.
|
---|
| 480 |
|
---|
| 481 | (9/19/96)
|
---|
| 482 | o Shane: Command line options seem to be screwed up. (9/13)
|
---|
| 483 | x Fixed. The geometry command line was broken, and so was the
|
---|
| 484 | gldebug command line.
|
---|
| 485 |
|
---|
| 486 | o Fixed a bug in the default glut reshape. It was looking for the
|
---|
| 487 | parent of the current window and GPF'ing if there wasn't a parent.
|
---|
| 488 | Put in a check for a parent, and if none is there, use the
|
---|
| 489 | child.
|
---|
| 490 |
|
---|
| 491 | o Idle function sucks up all processor cycles. (9/8/96)
|
---|
| 492 | x I don't know if this is avoidable. If you have a tight rendering
|
---|
| 493 | loop, it may be that the processor time is going to be sucked up
|
---|
| 494 | no matter what. You can add a sleep() to the end of your render
|
---|
| 495 | loop if you would like to yeild to other processes and you don't
|
---|
| 496 | care too much about the speed of your rendering loop. If you have
|
---|
| 497 | Hardware that supports OpenGL (like a 3Dpro card, or GLint card)
|
---|
| 498 | then this should be less of a problem, since it won't be rendering
|
---|
| 499 | in software. (9/11/96)
|
---|
| 500 |
|
---|
| 501 | o If a window is fully obscured by another window, the visibility
|
---|
| 502 | callback is NOT called. As far as I can tell, this is a limitation
|
---|
| 503 | of the Win32 api, but a workaround is being searched for. (9/8/96)
|
---|
| 504 | x Limitation of the Win32 API
|
---|
| 505 |
|
---|
| 506 | o Fixed the entry functions. They only work if the keyboard focus
|
---|
| 507 | changes. Therefore, in most Win32 systems, the mouse must be
|
---|
| 508 | pressed outside of the window to get a GLUT_LEFT message and
|
---|
| 509 | then pressed inside the window for a GLUT_ENTERED message.
|
---|
| 510 |
|
---|
| 511 | o Alt modifier key doesn't work with keyboard callback. (9/8/96)
|
---|
| 512 | x Probably okay, because the glut spec says that these keys can
|
---|
| 513 | be intercepted by the system (which the alt key is...) (9/11/96)
|
---|
| 514 |
|
---|
| 515 | (11/17/96)
|
---|
| 516 | o glutRemoveMenuItem() not working properly.
|
---|
| 517 | x Thanks to Gary (grc@maple.civeng.rutgers.edu) for the fix to
|
---|
| 518 | this one.
|
---|
| 519 |
|
---|
| 520 | o Timer functions are messed up.
|
---|
| 521 | x Thanks to Joseph Galbraith for the fix to this one.
|
---|
| 522 |
|
---|
| 523 | (12/9/96)
|
---|
| 524 | o One (minor) difference came up between the X version of glut
|
---|
| 525 | and the nt one which you should know about. It is not a new
|
---|
| 526 | problem, and it concerns co-ords returned to the pointer
|
---|
| 527 | callbacks. (glutMotionFunc, glutMouseFunc)
|
---|
| 528 | Under X, you get co-ords in the range 0 +/- 2^15, under NT
|
---|
| 529 | you get 0..2^16. This is only really a problem when moving
|
---|
| 530 | above or to the left of the window.
|
---|
| 531 | eg dragging one pixel ABOVE the window will give :-
|
---|
| 532 | under x11 : y = -1
|
---|
| 533 | under nt : y = 2^16 -1
|
---|
| 534 | x Put in fix provided by Shane Clauson.
|
---|
| 535 |
|
---|
| 536 | (12/17/96)
|
---|
| 537 | o Idle functions not working properly for multiple windows.
|
---|
| 538 | x Fixed this by posting an idle message to every window in the
|
---|
| 539 | window list when idle.
|
---|
| 540 |
|
---|
| 541 | (12/18/96)
|
---|
| 542 | o glutSetCursor() was misbehaving (lthomas@cco.caltech.edu).
|
---|
| 543 | x Win32 requires that the hCursor member of the window class
|
---|
| 544 | be set to NULL when the class is registered or whenever the
|
---|
| 545 | mouse is moved, the original cursor is replaced (go
|
---|
| 546 | figure!). Now sets the cursor whenever a WM_MOUSEMOVE message
|
---|
| 547 | is received, because the WM_SETCURSOR event resets the cursor
|
---|
| 548 | even when in the decoration area.
|
---|
| 549 |
|
---|
| 550 | o Geometry is not being handled quite right. The numbers don't
|
---|
| 551 | take into account the window decorations. That is, if I say
|
---|
| 552 | make a window 100x100, then the WHOLE window (not just the
|
---|
| 553 | client area) is 100x100. Therefore, the client (opengl) area
|
---|
| 554 | is smaller than 100x100. (9/8/96)
|
---|
| 555 | x Fixed. Added code to subtract the decoration size on glutGet()
|
---|
| 556 | and add the decoration size on glutReshapeWindow().
|
---|
| 557 |
|
---|
| 558 | o Multiple glutPostRedisplay() calls are NOT being combined.
|
---|
| 559 | To get round the "coalesce" problem on glutPostRedisplay,
|
---|
| 560 | the easiest solution is to roll-your-own coalesce by
|
---|
| 561 | keeping a global "dirty" flag in the app (eg replace all
|
---|
| 562 | calls to glutPostRedisplay with image_dirty=TRUE;), and to
|
---|
| 563 | handle image_dirty with a single glutPostRedisplay in the
|
---|
| 564 | idle callback when required. (erk - but increases
|
---|
| 565 | performance for my particular app (a rendering engine on
|
---|
| 566 | the end of a pipleine with a stream of graphics updates) by
|
---|
| 567 | a couple of orders of magnitude ! ) (9/8/96)
|
---|
| 568 | x Added code to coalesce redisplays. Every idle cycle, a
|
---|
| 569 | check is made to see which windows need redisplay, if they
|
---|
| 570 | need it, a redisplay is posted. The glutPostRedisplay()
|
---|
| 571 | call is just a stub that sets a flag.
|
---|
| 572 |
|
---|
| 573 |
|
---|
| 574 | THANKS:
|
---|
| 575 |
|
---|
| 576 | Special thanks to the following people for extensive testing,
|
---|
| 577 | suggestions, fixes and help:
|
---|
| 578 |
|
---|
| 579 | Alexander Stohr
|
---|
| 580 | Shane Clauson
|
---|
| 581 | Kenny Hoff
|
---|
| 582 | Richard Readings
|
---|
| 583 | Paul McQuesten
|
---|
| 584 | Philip Winston
|
---|
| 585 | JaeWoo Ahn
|
---|
| 586 | Joseph Galbraith
|
---|
| 587 | Paula Higgins
|
---|
| 588 | Sam Fortin
|
---|
| 589 | Chris Vale
|
---|
| 590 | Bill Mitchell
|
---|
| 591 |
|
---|
| 592 | and of course, the original author of GLUT:
|
---|
| 593 | Mark Kilgard.
|
---|
| 594 |
|
---|
| 595 | and many others...
|
---|
| 596 |
|
---|
| 597 |
|
---|
| 598 | COPYRIGHT:
|
---|
| 599 |
|
---|
| 600 | The OpenGL Utility Toolkit distribution for Win32 (Windows NT &
|
---|
| 601 | Windows 95) contains source code modified from the original source
|
---|
| 602 | code for GLUT version 3.3 which was developed by Mark J. Kilgard. The
|
---|
| 603 | original source code for GLUT is Copyright 1997 by Mark J. Kilgard.
|
---|
| 604 | GLUT for Win32 is Copyright 1997 by Nate Robins and is not in the
|
---|
| 605 | public domain, but it is freely distributable without licensing fees.
|
---|
| 606 | It is provided without guarantee or warrantee expressed or implied.
|
---|
| 607 | It was ported with the permission of Mark J. Kilgard by Nate Robins.
|
---|
| 608 |
|
---|
| 609 | THIS SOURCE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
---|
| 610 | EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
---|
| 611 | OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
---|
| 612 |
|
---|
| 613 | OpenGL (R) is a registered trademark of Silicon Graphics, Inc.
|
---|