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.