OpenGL Game Development Mailing List:
Frequently Asked Questions
Welcome to the FAQ for OpenGL Game Development Mailing List!
Thanks to all who have contributed. Corrections and contributions
always welcome.
The basic layout has been based on the comp.graphics.algorithsm
faq edited at the time and with permission from Joseph O'Rourke.
----------------------------------------------------------------------
This article is Copyright 1998 by Alex Amsel. It may be freely
redistributed in its entirety provided that this copyright notice
is not removed.
I can be contacted at:
Email: [email protected]
ICQ: 1588555
Tuna Technologies, Technical Director: +44 114 221 0686 (office)
+44 7771 524 632 (mobile)
TunaTech do contract game tools, console work, internet and
intranet,graphic design (inc. 3d characters, textures),
multimedia cdroms...
----------------------------------------------------------------------
Version: 0.91
Last Updated: 5th May 1998
Changed items this posting (|): none
New items this posting (+): none marked as this is the 1st draft
Requests:
* OpenGL and DirectX
* OpenGL Game Development on the MAC (CONIX?) and with UNIX
* Links to game design and programming sites
* Recommended Game Programming books
* More OpenGL programming specific sections
* Discussion of camera placement and object movement, inc. 1
small sub section on quarternions
* Section discussing some lighting issues, options, and links
(little detail)
* Section introducing collision detection (little detail)
* Section introducing file formats
* Section introducing Farenheit
----------------------------------------------------------------------
Table of Contents
----------------------------------------------------------------------
1. General
Information
1.01: The OpenGL
Game Development Mailing List
1.02: Are the
postings to the mailing list archived?
1.03: The purpose
of this FAQ?
1.04: How can I
get this FAQ?
1.05: Where can I
find useful info on graphics algorithms?
2. OpenGL
Implementations
2.01: Microsoft
OpenGL
2.02: SGI OpenGL
for Windows
2.03: Vendor
Specific OpenGL Ports and Miniports
2.04: OpenGL from
3DFX
3. OpenGL Support
Libraries
3.01: What is
MESA?
3.02: What is
GLUT?
3.03: What is
GameGLUT?
3.04: What is
Farenheit?
4. Programming
Environments and OpenGL
4.01: Visual C++
4.02: Borland C++
4.03: Delphi
4.04: Visual Basic
4.05: Java
5. OpenGL as a
rasterization only API
5.01: Why use
OpenGL as a rasterization-only API?
5.02: Is there a
performance hit for doing this?
5.03: How do I set
up OpenGL matrix stack for rastrization-only?
5.04: What about
clipping?
5.05: What about
the perspective divide?
5.06: Fog
5.07: Is there
some sample code to do this?
Appendices
A. General
References
A.01: OpenGL
Online Links
A.02: OpenGL
Specific Books
A.03: General
Computer Graphics Online Links
A.04: General
Computer Graphics Books
A.05: Game
Development Online Links
A.06: Game
Development Books
B. Contributors
B.01: How can you
contribute to this FAQ?
B.02: Contributors.
Who made this all possible.
Search e.g. for "Section 2" to find that section.
Search e.g. for "Subject 2.04" to find that item.
Search e.g. for "Appendix A.06" to find that appendix
item.
----------------------------------------------------------------------
Section 1. General Information
----------------------------------------------------------------------
Subject 1.01: The OpenGL Game Development Mailing List
"This list is being provided as a service to the 3D game
development community to help promote OpenGL as a viable and
exciting way to program 3D entertainment titles. Discussion of
game programming techniques and issues using OpenGL is the
primary goal of this list!
Since so much of the installed base consists of Intel PCs running
Win32 platforms, the emphasis will probably be on that
environment and C/C++. However, there are many other interesting
platforms out there, and any discussion relating to OpenGL
programming on those platforms is welcome! For instance, OpenGL
programming in Java may well become a hot topic soon. Another
thing to keep an eye on is OpenGL support in Apple's forthcoming
Rhapsody OS.
While the emphasis of this list is on game programming, general
OpenGL programming information and examples are welcome as well.
This is intended as a resource for all levels of OpenGL
programmers, from beginner to expert. Other topics that are
appropriate to the list include OpenGL device and driver quality,
OpenGL benchmarking, and other real-world issues involved in
doing OpenGL development. General topics relating to programming
3D games are also welcome.
There are a few things that aren't desired on the list. The
ongoing religious war between OpenGL and Direct3D is best left
somewhere else (rec.games.programmer is a likely candidate ;-).
Actively promoting other APIs besides OpenGL on this list is
discouraged. General programming questions (i.e. "which is
better a pointer or an array?") are also best taken
elsewhere. Some of these topics will inevitably creep onto the
list, but let's try to keep the discussion civil and
technical." - OpenGL Game Development List Charter
To subscribe, enter:
sub OPENGL-GAMEDEV-L <My Name>
Where <My Name> is your real name, not your E-mail address.
In the MESSAGE BODY (NOT Subject), mail the message to:
[email protected] <-- Note EXACT spelling of 'listserv'
To unsubscribe, use the same address above, but use the command:
unsub OPENGL-GAMEDEV-L
If you need further assistance, send a message to:
[email protected]
----------------------------------------------------------------------
Subject 1.02: Are the postings to the mailing list
archived?
An archive of this mailing list can be found at:
http://www.findmail.com/listsaver/opengl-gamedev-l/
----------------------------------------------------------------------
Subject 1.03: The purpose of this FAQ?
The main purpose of this FAQ is to either answer the most common
questions posted to the mailing list or to point readers in the
right direction. Questions on topics such as collision detection
are too large to answer here.
----------------------------------------------------------------------
Subject 1.04: How can I get this FAQ?
Currently the FAQ is without a home. As soon as it finds one it
will be made available via www, ftp, and will be posted to the
mailing list automatically on a bi-monthly basis.
----------------------------------------------------------------------
Subject 1.05: Where can I find useful info on graphics
algorithms?
The best source for general graphics algorithm information is the
comp.graphics.algorithms faq, posted bi-monthly on the newsgroup
of that name. This faq introduces many useful techniques as well
as listing the most important books and links that noone should
be without.
This FAQ is also available from:
http://www.exaflop.org/docs/cgafaq
ftp://rtfm.mit.edu/pub/faqs/graphics/algorithms-faq
----------------------------------------------------------------------
Section 2. OpenGL Implementations
----------------------------------------------------------------------
Subject 2.01: Microsoft OpenGL
Microsoft provide OpenGL drivers as standard with Windows NT4.0
and Windows 95 Release 2, and will continue to do so with Windows
98 and future Windows releases.
An upgrade can be found on the Microsoft website for owners of
Windows 95 Release 1. I am not aware of the distribution rules
for their OpenGL libraries.
Unlike the SGI libraries, the Microsoft ones will directly make
use of any available supported hardware. Software rendering with
the MS libraries is very slow, almost unusable in fact.
----------------------------------------------------------------------
Subject 2.02: SGI OpenGL for Windows
Quoting from the SGI OpenGL for Windows SDK:
"Silicon Graphics' OpenGL library for Windows is a
high-performance, fully compliant implementation that runs on
Intel PCs. It allows a PC with no dedicated 3D graphics hardware
to execute OpenGL applications at exceptional levels of
performance and complements accelerated OpenGL products available
from numerous 3D graphics hardware vendors.
This version of Silicon Graphics' OpenGL library for Windows
relies on Microsoft's OpenGL library for hardware acceleration.
If an OpenGL driver is available on the system then the library
will automatically call Microsoft's library so that the driver
will be invoked during rendering. The next version of Silicon
Graphics' library will be able to load OpenGL drivers
directly."
SGI libraries are called opengl.dll and glu.dll while the
Microsoft libraries are called opengl32.dll and glu32.dll.
Due to the agreement made between Microsoft and Silicon Graphics
in early1998, this product is no longer being developed as such
and is no longer officially available. However, the software
rendering is far in advance of the Microsoft implementation (for
political reasons) and some IHVs are basing their OpenGL
libraries around this version, 3dfx for example. There are a few
unsupported functions, but overall this is the choice for OpenGL
development on unaccelerated machines.
In the future, a joint venture between Microsoft and SGI will
probably provide a successor to both Direct3D and OpenGL, called
Farenheit.
For further information please see the SDK. You can find a copy
at:
http://www.berkelium.com/OpenGL/
IMPORTANT NOTE
~~~~~~~~~~~~~~
First time users often have the same problem with the SGI
implementation, please read the following if you cannot get your
version to link correctly:
Quoting from the SGI OpenGL for Windows SDK FAQ Section 4:
"To use SGI's OpenGL for Windows you must link with
OPENGL.LIB and GLU.LIB instead of OPENGL32.LIB and GLU32.LIB
respectively. Also make sure that OPENGL.LIB and GLU.LIB precede
GDI32.lib in the library list. Since SGI's OpenGL for Windows
library overloads the ChoosePixelFormat() function in GDI you
need to make sure that you link the libraries in the right order
so you don't pick up the wrong version of ChoosePixelFormat().
You should also set your include path so that SGI's header files
have precedence over Microsoft's. This is required if you wish to
use any of the extensions provided in SGI's OpenGL library for
Windows."
----------------------------------------------------------------------
Subject 2.03: Vendor Specific OpenGL Ports and Miniports
As well as the main Microsoft and SGI implementations hardware
vendors may ship their own OpenGL ports based on either of the
aforementioned drivers. Whilst a full port is meant to strictly
adhere to the standards laid down by the OpenGL 1.1 specification
it is often the case that bugs and minor incompatibilites remain.
Vendors also often provide their own extensions; check their
documentation for more information, use glGetString to verify
their existence, and use the appropriate function to call the
extension (via wglGetProcAddress under Windows).
NB: You must have an existing GL context or your call to
glGetString may not be valid, though your target window may to
some extent be defined by the hardware available to the user.
One way around this is to temporarily open a dummy window when
your application starts up, then open a further window set up
according to the hardware available.
OpenGL Miniports are there to support games such as Quake, and
they will usually only support a small subset of OpenGL commands.
There are some notes on miniports made available by independent
users on the internet, but generally hardware manufacturers seem
to be reluctant to release many details. Since most IHVs expect
to provide full OpenGL 1.1 compliance miniports are not expected
to be so useful in the future.
All the high end graphic card manufacturers support OpenGL, and
of the lower end manufacturers the following were known to be
licensees early in 1998:
S3, 3Dfx, Rendition, 3Dlabs, NVidia, ATI, Cirrus Logic and Number
9.
If anyone has a complete list of licensee perhaps they could
forward it for inclusion in this FAQ.
----------------------------------------------------------------------
Subject 2.04: OpenGL from 3DFX
Like most vendors, 3DFX are working on a full implementation of
OpenGL 1.1. To date there is a beta version of the driver
available upon signing an NDA. For more information see http://www.3dfx.com
NB: Many people signed and returned the NDA yet didn't hear back
from 3DFX for weeks. If you have this problem then send them an
email briefly explaining the problem (without being critical) and
they will help you get the driver as quickly as possible.
For release notes see the 3dfx website and newsgroups, the beta
version still has a few features missing.
2nd Monitor Debugging
~~~~~~~~~~~~~~~~~~~~~
One nice thing about 3dfx cards is that you can plug a 2nd VGA
monitor into the output of the 3dfx card while keeping your main
monitor attached to your primary video card. This allows you near
full use of Windows functions for debugging, though there can be
problems with the 3dfx not knowing it's screen/window is visible
(another dreaded black screen problem). Usually bringing your
3dfx window into the foreground will solve the problem, but if
anyone has good solutions for many of SGI's example programs
perhaps they could send them in.
Removing the 3DFX Logo
~~~~~~~~~~~~~~~~~~~~~~
If you don't wish the 3dfx logo to be shown on user's machines,
then according to Sam McGrath the following method is best:
In runapp.bat:
set T = %FX_GLIDE_NO_SPLASH% set FX_GLIDE_NO_SPLASH=1 runapp.exe set FX_GLIDE_NO_SPLASH = %T%
The user's previous settings are therefore kept in place.
----------------------------------------------------------------------
----------------------------------------------------------------------
Section 3. OpenGL Support Libraries
----------------------------------------------------------------------
http://www.ssec.wisc.edu/~brianp/Mesa.html):
"Mesa is a 3-D graphics library which uses the OpenGL API
(Application Programming Interface). Mesa cannot be called an
implementation of OpenGL since I did not obtain an OpenGL license
from SGI. Furthermore, Mesa cannot claim OpenGL conformance since
the conformance tests are only available to OpenGL licensees.
Despite these technical/legal terms, you may find Mesa to be a
valid alternative to OpenGL."
"Most applications written for OpenGL can be recompiled for
Mesa without making any source code changes."
Mesa is issued with full source code under GPL and runs on a huge
range of operating systems:
UNIX/X11, Linux, Amiga, Apple Macintosh, BeOS, NeXT, OS/2,
MS-DOS, VMS, and Windows 95/NT
Mesa is also hardware accelerated on 3Dfx Voodoo, Voodoo RUSH,
and Voodoo 2 - check the MESA FAQ for up to date information on
other accelerators.
Other Mesa questions are answered in the Mesa FAQ at:
http://www.ssec.wisc.edu/~brianp/MesaFAQ.html
Mesa can be obtained from:
http://www.ssec.wisc.edu/~brianp/Mesa.html
There is a Mesa Mailing List, to subscribe, send email to [email protected] with this as the body of the message:
subscribe mesa your-email-address
----------------------------------------------------------------------
Subject 3.02: What is GLUT?
Quoting the Author of GLUT (Mark Kilgard) from his GLUT homepage
(http://reality.sgi.com/mjk_asd/spec3/spec3.html):
"The OpenGL Utility Toolkit (GLUT) is a programming
interface with ANSI C and FORTRAN bindings for writing window
system independent OpenGL programs. The toolkit supports the
following functionality:
Multiple windows for OpenGL rendering.
Callback driven event processing.
Sophisticated input devices.
An 'idle' routine and timers.
A simple, cascading pop-up menu facility.
Utility routines to generate various solid and wire frame
objects.
Support for bitmap and stroke fonts.
Miscellaneous window management functions, including managing
overlays."
GLUT is Copyright material and not in the public domain, but it
is freely distributable without licensing fees and comes with
complete source code. It is available for Windows 95, Windows NT,
UNIX/X, Linux, OS/2 and Macintosh.
Other GLUT questions are answered in the GLUT FAQ which is
distributed with the GLUT library.
GLUT can be obtained from:
http://reality.sgi.com/mjk_asd/glut3/glut3.html
There is a GLUT Mailing List, to subscribe, send email to
[email protected] with a body saying "subscribe
glut".
----------------------------------------------------------------------
Subject 3.03: What is GameGLUT?
GameGLUT is a utility toolkit being written with games in mind.
Mark Kilgard introduced the possibility in late 1997/early 1998.
The current status of GameGLUT is unknown, if someone could
provide some up to date information for this section...
----------------------------------------------------------------------
Subject 3.04: What is Farenheit?
TBD
AUTHOR AND LINKS REQUIRED
----------------------------------------------------------------------
Section 4. Programming Environments and OpenGL
----------------------------------------------------------------------
Subject 4.01: Visual C++
Linking any of the libraries with Microsoft Visual C++ is as easy
as changing the linked libraries.
Before linking with the SGI OpenGL for Windows libraries please
see the IMPORTANT NOTE in the SGI OpenGL for Windows section.
----------------------------------------------------------------------
Subject 4.02: Borland C++
A comp.graphics.api.opengl posting by John Biddiscombe,[email protected], includes the following tips:
TIP : C++Builder uses a whole load of lib's in the CBuilder/lib
directory, these libs, inparticular import32.lib already contain
the opengl32.lib and glu32.lib inside them. This means that you
don't actually need to link to the libs using C++Builder. If you
want to (say) switch from microsoft opengl to SGI opengl, then
you need to use TLIB.exe to remove the DLL's from import32.lib,
some notes are included in the files in the above directory.
TIP2 : Use implib.exe to generate a lib from a DLL, frequently
people distribute code with lib's in MSVC format so Borland users
get stuck.
Borland C++ links ok to OpenGL, but there are a couple of
problems users should be aware of.
* The Microsoft implementation can cause undefined exceptions
when run under the BCB Pro debugger.
* You need to mask floating point exceptions by including the
following line in your initialisation routines:
_control87(MCW_EM, MCW_EM);
MCD_EM should be defined in float.h
Failing to do this results in spurious floating point exceptions,
when using lighting or normalisation in particular.
A couple of examples are on:
http://rcru1.te.rl.ac.uk/~jab/opengl/
Before linking with the SGI OpenGL for Windows libraries please
see the IMPORTANT NOTE in the SGI OpenGL for Windows section.
Alan Garny has some BCB OpenGL components available:
http://pc-heartbreak.physiol.ox.ac.uk/
----------------------------------------------------------------------
Subject 4.03: Delphi
TBD
----------------------------------------------------------------------
Subject 4.04: Visual Basic
Patrice Scribes DirectX/OpenGL for VB site should be able to
answer most questions:
http://www.chez.com/scribe/
----------------------------------------------------------------------
Subject 4.05: Java
Quoting from the press release from Arcane Technologies Ltd:
"Magician allows developers to write portable,
high-performance OpenGL applications using the Java programming
language. To effect the high-performance rendering, Magician
interfaces directly with existing OpenGL installations in the
form of native code. In-core support for thread-safeness has also
been implemented enabling developers to take full advantage of
Java's powerful multi-threading. Additional developer features
include in-built interactive tracing and profiling of OpenGL
calls.
Magician is currently shipping for Windows 95/NT, Linux and Irix
operating systems with ports to Solaris, MacOs and OS/2 in the
pipeline. Netscape Communicator, Internet Explorer, Symantec Cafe
and the Sun JRE/JDK are currently supported for both application
and applet usage on suitable platforms."
See http://www.arcana.co.uk/products/magician
----------------------------------------------------------------------
Section 5. OpenGL as a rasterization only API
----------------------------------------------------------------------
Subject 5.01: Why use OpenGL as a rasterization-only API?
Because your app does its own transform, and supplies
screen-space coordinates to the OpenGL. There are lots of reasons
why an app might do this.
----------------------------------------------------------------------
Subject 5.02: Is there a performance hit for doing this?
It depends on where the best place for doing the transform is. If
(for example) there is fast transform hardware, then it would
probably be a good idea to use it. If the OpenGL transform code
is more efficient than the code in your app, then a similar
argument applies.
----------------------------------------------------------------------
Subject 5.03: How do I set up OpenGL matrix stack for
rastrization-only?
Something like:
glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glViewport(0, 0, width, height); /* viewport size in pixels */
will mean that the 3D point (0,0,0) is in the center of the
viewport,and that
(1,1,0) is the top-right corner of the viewport.
To get a 1:1 pixel mapping, with (0,0,0) in the top-left of the
viewport and (width,height,0) in the bottom-right, do this:
glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glScalef(2.0f / (float)width, -2.0f / (float)height, 1.0f); glTranslatef(-((float)width / 2.0f), -((float)height / 2.0f), 0.0f); glViewport(0, 0, width, height); /* viewport size in pixels */
----------------------------------------------------------------------
Subject 5.04: What about clipping?
Most OpenGL implementations, including SGI's for Windows, have
extremely efficient clip-check code. The cost varies between
negligible and zero. Some hardware can rasterize primitives that
go outside the viewport for free, so it's not worthwhile to do
clipping on the host. For this reason, you might as well leave
clipping to OpenGL. In pseudocode, you change this:
if (primitive isn't rejected)
if (primitive is trivially accepted)
draw it
else
clip it
to this:
if (primitive isn't rejected)
draw it.
OpenGL will clip it, or not, as the
hardware requires.
----------------------------------------------------------------------
Subject 5.05: What about the perspective divide?
You _can_ supply coordinates with (w == 1.0f), if you're prepared
to do the perspective divide yourself. However, you might miss
out on acceleration (for a similar reason to part 4 above), plus
this approach makes supplying perspective-correct texture
coordinates a headache. For these reasons it's probably best to
use glVertex4f() and supply the transformed (i.e. non unity) w.
If you do this, you can supply texture coordinates with
glTexCoord2fv().
----------------------------------------------------------------------
Subject 5.06: Fog
The degree of fogging is calculated according to the
eye-coordinate's z component. With a modelview matrix that passes
Z straight through (such as the two above), you can set the near
and far fog values according to the range of Z values that come
out of your transform. You must use GL_LINEAR for this to work.
For example, to make the "rasonly" example fogged, do
the following:
{
GLfloat fog_color[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; /* white */
glEnable(GL_FOG);
glHint(GL_FOG_HINT, GL_FASTEST);
glFogi(GL_FOG_MODE, GL_LINEAR);
glFogf(GL_FOG_START, 1.0f);
glFogf(GL_FOG_END, 4.0f);
glFogfv(GL_FOG_COLOR, fog_color);
}
----------------------------------------------------------------------
Subject 5.07: Is there some sample code to do this?
The best sample is Michael Gold's "rasonly.c" -
available at:
http://www.berkelium.com/OpenGL/examples/index.html
----------------------------------------------------------------------
-------------------------- Appendices
--------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------
Appendix A. General References
----------------------------------------------------------------------
Subject A.01: OpenGL Online Links
Rather than listing endless OpenGL links here, the reader is
refered to Mark Kilgard's superb collection of appropriate
links at:
http://reality.sgi.com/mjk/
Mark has links to anything and everything related to OpenGL.
The Advanced Rendering course notes hosted at the SGI website
offer good tutorials into OpenGL programming:
http://www.sgi.com/Technology/OpenGL/advanced97/notes/notes.html
http://www.opengl.org: In the Developers section you will find
links to many useful places
There are several useful USENET groups, including:
comp.graphics.api.opengl
comp.graphics.algorithms
rec.games.programmer
[Multipass Rendering]
http://carol.wins.uva.nl/~kok/gl/rs.html
[Full Screen Examples]
http://users.cybercity.dk/~kam1256
----------------------------------------------------------------------
Subject A.02: OpenGL Specific Books
The red book (programming guide) is a must buy for those new to
OpenGL, while the useful blue book (reference guide) can also be
found online. Before buying any OpeNGL books you should verify
they cover OpenGL 1.1 or onwards if possible.
OpenGL Reference Manual (2nd Ed.), AKA "Blue Book"
Editors: R. Kempf, C. Frazier
Addison-Wesley 1996, ISBN 0-201-46140-4
Version 1.0 is online at:
http://heron.cc.ukans.edu/ebt-bin/nph-dweb/dynaweb/SGI_Developer/OpenGL_PG/@Generic__BookTocView
OpenGL Programming Guide (2nd Ed.), AKA "Red Book"
M. Woo, J. Neider, T. Davis
Addison-Wesley 1997, ISBN 0-201-46138-2
OpenGL Programming with X-Windows, AKA "Green Book"
OpenGL Programming in MS-Windows, AKA "White/Alpha
Book"
OpenGL SuperBible
----------------------------------------------------------------------
Subject A.03: General Computer Graphics Online Links
Some of these links have been taken from the
comp.graphics.algorithms faq.
[Animation]
Modelling physically based systems for animation:
http://www.cc.gatech.edu/gvu/animation/Animation.html
Motion Capture Examples
http://www.darwin3d.com/gamedev.htm
[Collisions]
A variety of interesting algorithms are being researched,
including:
http://www.cs.berkeley.edu/~mirtich/impulse.html
http://www.cs.unc.edu/~geom/I_COLLIDE.html
http://www.cs.wustl.edu/~pmh/
http://www.win.tue.nl/cs/tt/gino/solid/
Source code for smallest bounding sphere around points:
http://vision.ucsd.edu/~dwhite/ball.html
[Level of Detail Algorithms]
http://www.research.microsoft.com/research/graphics/hoppe/
http://www.cc.gatech.edu/gvu/people/peter.lindstrom
http://research.microsoft.com/MSRSIGGRAPH/
http://www.undergrad.math.uwaterloo.ca/~s3graham/
http://w3imagis.imag.fr/Membres/Fredo.Durand/Book/sig97
http://www.cs.utah.edu/~ppsloan/siggraph96.html
[Miscellaneous]
comp.graphics.algorithms FAQ:
comp.graphics.algorithms newsgroup (posted bi-monhtly)
http://www.exaflop.org/docs/cgafaq
ftp://rtfm.mit.edu/pub/faqs/graphics/algorithms-faq
Ron Fosner has several links to useful books and information:
http://www.directx.com/books.htm
David Eberly has lots of useful maths notes and code:
http://www.cs.unc.edu/~eberly
Leath Muller is putting together several FAQs, including
ones on character animation, matrices, and vectors:
http://www.geocities.com/SiliconValley/Horizon/2097
The University of Manchester NURBS Library:
ftp://unix.hensa.ac.uk/pub/misc/unix/nurbs/
For an implementation of Seidel's algorithm for fast
trapezoidation
and triangulation of polygons. You can get the code from:
ftp://ftp.cs.unc.edu/pub/users/narkhede/triangulation.tar.gz
A compact reference for real-time 3d computer graphics
programming:
http://www.cs.mcgill.ca/~zed
BSP Tree FAQ by Bretton Wade:
http://reality.sgi.com/bspfaq/
Gamma and Color FAQs by Charles A. Poynton:
ftp://ftp.inforamp.net/pub/users/poynton/doc/colour/
http://www.inforamp.net/~poynton/
Quaternion introductions:
http://www.glue.umd.edu/~rsrodger/gd/matrixfaq.htm
http://http.cs.berkeley.EDU/~laura/cs184/quat
ftp://ftp.netcom.com/pub/hb/hbaker/quaternion/
[Volume Lighting Examples]
http://www.softplusplus.com/
----------------------------------------------------------------------
Subject A.04: General Computer Graphics Books
These are a small section of those mentioned in the
comp.graphics.algorithms faq.
[Foley]
Computer Graphics: Principles and Practice (2nd Ed.),
J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes, Addison-Wesley
1990, ISBN 0-201-12110-7;
Computer Graphics: Principles and Practice, C version
J.D. Foley, A. van Dam, S.K. Feiner, J.F. Hughes, Addison-Wesley
ISBN: 0-201-84840-6, 1996, 1147 pp.
[Rogers:Procedural]
Procedural Elements for Computer Graphics,
David F. Rogers, McGraw Hill 1985, ISBN 0-07-053534-5
[Rogers:Mathematical]
Mathematical Elements for Computer Graphics 2nd Ed.,
David F. Rogers and J. Alan Adams, McGraw Hill 1990, ISBN
0-07-053530-2
[Watt:3D]
3D Computer Graphics, 2nd Edition,
Alan Watt, Addison-Wesley 1993, ISBN 0-201-63186-5
[Glassner:RayTracing]
An Introduction to Ray Tracing,
Andrew Glassner (ed.), Academic Press 1989, ISBN 0-12-286160-4
[Gems I]
Graphics Gems,
Andrew Glassner (ed.), Academic Press 1990, ISBN 0-12-286165-5
[Gems II]
Graphics Gems II,
James Arvo (ed.), Academic Press 1991, ISBN 0-12-64480-0
[Gems III]
Graphics Gems III,
David Kirk (ed.), Academic Press 1992, ISBN 0-12-409670-0 (with
IBM disk) or 0-12-409671-9 (with Mac disk)
See also "AP Professional Graphics CD-ROM Library,"
Academic Press, ISBN 0-12-059756-X, which contains Gems I-III.
[Gems IV]
Graphics Gems IV,
Paul S. Heckbert (ed.), Academic Press 1994, ISBN 0-12-336155-9
(with IBM disk) or 0-12-336156-7 (with Mac disk)
[Gems V]
Graphic Gems V,
Alan W. Paeth (ed.), Academic Press 1995, ISBN 0-12-543455-3
(with IBM disk)
[Watt:Animation]
Advanced Animation and Rendering Techniques,
Alan Watt, Mark Watt, Addison-Wesley 1992, ISBN 0-201-54412-1
----------------------------------------------------------------------
Subject A.05: Game Development Online Links
Computer Science Department at the University of Maryland Game
Developers FAQ:
http://www.glue.umd.edu/~rsrodger/
USENET:
rec.games.programmer
----------------------------------------------------------------------
Subject A.06: Game
Development Books
TBD
----------------------------------------------------------------------
Appendix B. Contributors
----------------------------------------------------------------------
Subject B.01: How can you contribute to this FAQ?
Send email to [email protected] with your suggestions, possible
topics, corrections, or pointers to information.
----------------------------------------------------------------------
Subject B.02: Contributors. Who made this all possible.
* Only YOU make this possible *
These are people who have contributed in some way, including the
names of those whose postings I have used to construct this FAQ:
Alex Amsel
Joseph O'Rourke
James Bowman
Tom Hubina
Michael Dale Long
Peder Blekken
Steve Baker
John Biddiscombe
Richard Wright
Sam McGrath
Bernd Kreimeier
Michael Brooks
Leath Muller
Ron Fosner
And finally, a compulsory mention to Wolverhampton Wanderers FC
for continually making my life a misery by failing to win
anything. If anyone thinks there are no heros left in this money
oriented world, they need to read up on STEVE BULL, whether
football fan or not.
Converted to HTML by Leo 29 July 1998
Any error in the conversion is solely mine.