Professional Documents
Culture Documents
README Win32
README Win32
README Win32
---------------------
VERSION/INFO:
For more information about GLUT for Win32, see the web page:
www.pobox.com/~nate/glut.html or subscribe to the GLUT for Win32
mailing list by sending e-mail to majordomo@perp.com with
"subscribe glut" in the body of the message.
For general information about GLUT, see the GLUT web page:
http://reality.sgi.com/opengl/glut3/glut3.html and be sure to
check the GLUT FAQ first for any questions that you may have:
http://reality.sgi.com/opengl/glut3/glut-faq.html
COMPILING/INSTALLATION:
BORLAND NOTES:
MISC NOTES:
o To customize the windows icon, you can use the resource name
GLUT_ICON. For example, create an icon named "glut.ico", and
create a file called glut.rc that contains the following:
GLUT_ICON ICON glut.ico
then compile the glut.rc file with the following:
rc /r glut
and link the resulting glut.res file into your executable
(just like you would an object file).
Alternatively, you can simply add the glut.rc file to your
project if you are using Microsoft Developer Studio.
o glutInit:
The following command line options have no meaning (and are
ignored) in GLUT for Win32:
-display, -indirect, -direct, -sync.
o glutInitWindowPosition, glutPositionWindow:
Win32 has two different coordinate systems for windows.
One is in terms of client space and the other is the whole
window space (including the decorations). If you
glutPositionWindow(0, 0), GLUT for Win32 will place the
window CLIENT area at 0, 0. This will cause the window
decorations (title bar and left edge) to be OFF-SCREEN, but
it gives the user the most flexibility in positioning.
HOWEVER, if the user specifies glutInitWindowPosition(0, 0),
the window is placed relative to window space at 0, 0.
This will cause the window to be opened in the upper left
corner with all the decorations showing. This behaviour is
acceptable under the current GLUT specification.
o glutSetIconTitle, glutSetWindowTitle:
There is no separation between Icon title and Window title
in Win32. Therefore, setting an icon title in Win32 has
no effect.
o glutSetCursor:
As indicated in the GLUT specification, cursors may be
different on different platforms. This is the case in GLUT
for Win32. For the most part, the cursors will match the
meaning, but not necessarily the shape. Notable exceptions
are the GLUT_CURSOR_INFO & GLUT_CURSOR_SPRAY which use the
crosshair cursor and the GLUT_CURSOR_CYCLE which uses the
'no' or 'destroy' cursor in Win32.
o glutVisibilityFunc:
Win32 seems to be unable to determine if a window is fully
obscured. Therefore, the visibility of a GLUT window is
only reflected by its Iconic, Hidden or Shown state. That
is, even if a window is fully obscured, in GLUT for Win32,
it is still "visible".
o glutEntryFunc:
Window Focus is handled differently in Win32 and X.
Specifically, the "window manager" in Win32 uses a "click to
focus" policy. That is, in order for a window to receive
focus, a mouse button must be clicked in it. Likewise, in
order for a window to loose focus, a mouse button must be
clicked outside the window (or in another window).
Therefore, the Enter and Leave notification provided by GLUT
may behave differently in the Win32 and in X11 versions.
There is a viable workaround for this. A program called
"Tweak UI" is provided by Microsoft which can be used to
change the focus policy in Win32 to "focus follows mouse".
It is available from the Microsoft Web Pages:
http://www.microsoft.com/windows/software/PowerToy.htm
o glutCopyColormap:
GLUT for Win32 always copies the colormap. There is never
any sharing of colormaps. This is probably okay, since
Win32 merges the logical palette and the physical palette
anyway, so even if there are two windows with totally
different colors in their colormaps, Win32 will find a
(hopefully) good match between them.
o glutIdleFunc + menus:
The glut idle function will NOT be called when a menu is
active. This causes all animation to stop when a menu is
active (in general, this is probably okay). Timer
functions will still fire, however. If the timer callback
draws into the rendering context, the drawing will not show
up until after the menu has finished, though.
UNSUPPORTED/BUGS:
o glutAttachMenu:
Win32 only likes to work with left and right mouse buttons.
Especially so with popup menus. Therefore, when attaching
the menu to the middle mouse button, the LEFT mouse button
must be used to select from the menu.
CHANGES/FIXES:
(Nov 8, '01)
x Released 3.7.6
(Nov 8, '01)
x Changed fullscreen mode from TOPMOST back to simply TOP, since
(it turns out) many people use windows atop a GLUT window.
(Nov 8, '01)
x Added code to prevent CPU spiking when no idle function is
registered. Otherwise, if an idle function is registered, spike
CPU so that the idle function gets all the attention it needs and
if this is a problem on the program side, the user can stick a
sleep() in their idle function. I believe that this strikes the
best balance betweeen GLUT being fast, and also being "nice" to
other processes. Thanks to James Wright for reporting this bug.
(Nov 8, '01)
x Fixed bug in motion callback handler which wasn't setting the
current window, so multiple window apps (e.g., any GLUI app)
wouldn't get the callback correctly.
(Oct 4, '01)
x Fixed bug in glutEnterGameMode() that caused new windows to not
be in "fullscreen" mode, so they got window decorations.
(Oct 4, '01)
x Fixed bug in glutEnterGameMode() that caused new windows to not
be in "fullscreen" mode, so they got window decorations.
(Oct 3, '01)
x Fixed bug in getVisualInfoFromString(): visuals not reloaded on
display mode change. Reload visuals each time they are queried.
This fixes a problem with Win32 because the list of availabe Visuals
(Pixelformats) changes after a change in displaymode. The problem
occurs when switching to gamemode and back. Thanks to Michael
Wimmer for pointing this out & providing the fix.
(Oct 3, '01)
x Fixed bug in XGetVisualInfo(): pixelformats enumerated incorrectly.
Passing 0 as a pixelformat index to DescribePixelFormat gives
unpredictible results (e.g., this fails on the Voodoo opengl32.dll
and always reports 0 as the last available pixelformat index).
Thanks to Michael Wimmer for pointing this out & providing the fix.
(Oct 3, '01)
x Fixed bug in glXGetConfig(): pixelformats enumerated incorrectly. The
test was OpenGL support OR draw to window, but should be AND. Thanks
to Michael Wimmer for pointing this out & providing the fix.
(Dec 7, '00)
x Fixed several compilation problems & corrupt files. Thanks to
Alexander Stohr for bringing these to my attention and providing
detailed fixes.
(Dec 6, '00)
x Fixed compiler support for lcc. Thanks to Gordon for bringing
this to my attention and debugging fixes.
(Nov 8, '00)
x Fixed submenu problem (sometimes the menu callback was not
called for valid items). Thanks to Michael Keeley.
(Sept 9, '00)
x Fixed Delete key bug (crash when no keyboard callback was
registered, but a special key callback was). Thanks to
Kent Bowling (kent_bowling@hotmail.com) for finding this bug.
(Apr 7, '97)
o Palette is incorrect for modes other than TrueColor.
x Fixed this by forcing a default palette in modes that aren't
Truecolor in order to 'simulate' it. The applications
program shouldn't have to do this IMHO, but I guess we
can't argue with Microsoft (well, we can, but what good
will it do?).
(Apr 2, '97)
x Added glut.ide file for Borland users.
(Apr 2, '97)
x Fixed a bug in the WM_QUERYNEWPALETTE message. Wasn't
checking for a null colormap, then de-ref'd it. Oops.
(Mar 7 '97)
x Fixed minor bugs tracked down by the example programs.
(Mar 6, '97)
x Merged 3.3 GLUT for X11 into 3.2 GLUT for Win32. New code
structure allows for EASY merging!
o In Win32, the parent gets the right to set the cursor of
any of its children. Therefore, a child windows cursor
will 'blink' between its cursor and its parent.
x Fixed this by checking whether the cursor is in a child
window or not.
(Feb 28 '97)
o On initial bringup apps are getting 2 display callbacks.
x Fixed by the Fev 28 re-write.
(Feb 28 '97)
o Quite a few bugs (and incompatibilities) were being caused
by the structure that I used in the previous port of GLUT.
Therefore I decided that it would be best to "get back to
the roots". I re-implemented most of glut trying to stick
with the structure layed out by Mark. The result is a much
more stable version that passes ALL (!) (except overlay)
the tests provided by Mark. In addition, this new
structure will allow future enhancements by Mark to be
integrated much more quickly into the Win32 version. Also,
I'm now ordering the bugs in reverse, so that the most
recently fixed appear at the top of the list.
(9/8/96)
o Changed the glutGetModifiers code to produce an error if not
called in the core input callbacks.
(9/11/96)
o If the alt key is pressed with more than one other modifier key
it acts as if it is stuck -- it stays selected until pressed
and released again.
x Fixed.
(9/12/96)
o When a submenu is attached to a menu, sometimes a GPF occurs.
Fixed. Needed to set the submenu before referencing it's members.
(9/15/96)
o Added code to accept a user defined icon. If no icon is provided,
a default icon is loaded.
(9/19/96)
o Shane: Command line options seem to be screwed up. (9/13)
x Fixed. The geometry command line was broken, and so was the
gldebug command line.
o Fixed a bug in the default glut reshape. It was looking for the
parent of the current window and GPF'ing if there wasn't a parent.
Put in a check for a parent, and if none is there, use the
child.
o Fixed the entry functions. They only work if the keyboard focus
changes. Therefore, in most Win32 systems, the mouse must be
pressed outside of the window to get a GLUT_LEFT message and
then pressed inside the window for a GLUT_ENTERED message.
(11/17/96)
o glutRemoveMenuItem() not working properly.
x Thanks to Gary (grc@maple.civeng.rutgers.edu) for the fix to
this one.
(12/9/96)
o One (minor) difference came up between the X version of glut
and the nt one which you should know about. It is not a new
problem, and it concerns co-ords returned to the pointer
callbacks. (glutMotionFunc, glutMouseFunc)
Under X, you get co-ords in the range 0 +/- 2^15, under NT
you get 0..2^16. This is only really a problem when moving
above or to the left of the window.
eg dragging one pixel ABOVE the window will give :-
under x11 : y = -1
under nt : y = 2^16 -1
x Put in fix provided by Shane Clauson.
(12/17/96)
o Idle functions not working properly for multiple windows.
x Fixed this by posting an idle message to every window in the
window list when idle.
(12/18/96)
o glutSetCursor() was misbehaving (lthomas@cco.caltech.edu).
x Win32 requires that the hCursor member of the window class
be set to NULL when the class is registered or whenever the
mouse is moved, the original cursor is replaced (go
figure!). Now sets the cursor whenever a WM_MOUSEMOVE message
is received, because the WM_SETCURSOR event resets the cursor
even when in the decoration area.
THANKS:
Alexander Stohr
Shane Clauson
Kenny Hoff
Richard Readings
Paul McQuesten
Philip Winston
JaeWoo Ahn
Joseph Galbraith
Paula Higgins
Sam Fortin
Chris Vale
Bill Mitchell
and of course, the original author of GLUT:
Mark Kilgard.
COPYRIGHT:
THIS SOURCE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.