The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers


1 About the FAQ

1.010 Introduction

The OpenGL Technical FAQ and Troubleshooting Guide will answer some basic technical questions and explain frequently misunderstood topics, features, and concepts.

All text, example code, and code snippets in this FAQ are in the public domain. The text, example code, and code snippets can be used and copied freely. Hyperlinks to text and example code not contained in this FAQ may or may not be public domain, and their usage may be restricted accordingly.  

1.020 How to contribute, and the contributors

This FAQ is maintained by Paul Martz (email:

Contribute to the FAQ by contacting Paul Martz, the FAQ maintainer. Suggestions, topics, corrections, information, and pointers to information are welcome.

The following people have explicitly contributed written material to this FAQ: Brian Bailey, Brett Johnson, Paul Martz, Samuel Paik, Joel Parris, and Thant Tessman.

Several people have unwittingly contributed information through conversations with the FAQ maintainer and/or their several informative postings to the newsgroup. A partial list includes: Darren Adams, Stephane Albi, Mark B. Allan, Pierre Alliez, Steve Baker, Konstantin Baumann, Ron Bielaski, Kevin Bjorke, Lars Blaabjerg, Frans Bouma, Anders Brodersen, Michael Brooks, Jeff Burrell, Won Chun, Mike Coplien, Bart De Lathouwer, Angus Dorbie, Bob Ellison, Glenn Forney, Ron Fosner, Phil Frisbie Jr, Michael I. Gold, Paul Groves, Charles E. Hardwidge, Jason Harrison, Michael S. Harrison, Mike Heck, Chris Hecker, Scott Heiman, Helios, Blaine Hodge, Steve Humphreys, Michael Kennedy, Marco Klemm, Mark Kilgard, Sam Kirchmeier, Oliver Kurowski, Michael Kurth, Wolfram Kuss, Bruce Lamming, Robert Lansdale, Jon Leech, Stuart Levy, Barthold Lichtenbelt, Mike Lischke, Ben Loftin, Hrafn Loftsson, Konstantinos Manthos, Jean-Luc Martinez, Steve McAndrewSmith, Phil McRevis, David Melinosky, Reed Mideke, Mark Morley, Teri Morrison, Duncan Murdoch, Doug Newlin, Geert Poels, David Poon, Lev Povalahev, Dirk Reiners, Stephane Routelous, Schneide, Shaleh, Dave Shreiner, Hal Snyder, Andrew F. Vesper, Jon White, Lucian Wischik, Mitch Wolberg, Karsten Wutzke, and Zed.

Jeff Molofee's OpenGL code was the inspiration for Brian Bailey's MFC example (accessible from question 5.160). Jeff maintains the NeHe Web page.

Special thanks to Yukio Andoh for the Japanese translation, and Thomas Kern for the German translation.

1.030 Download the entire FAQ as a Zip file

Download the entire FAQ in a single zip file (~180KB).

1.031 Printing the PDF FAQ

The entire FAQ is available as a single PDF file for easy printing.

PDF FAQ (~610KB)
Zipped PDF FAQ (~324KB)

1.040 Change Log

Date Notes
November 1, 2001 Table of Contents: Fixed typo.
1.020: Changed email address for FAQ maintainer.
2.005: Updated hyperlink.
2.005: Added hyperlink to C++ 3D math library web page.
2.010: Updated hyperlink.
2.020: Updated hyperlink.
2.130: Updated hyperlink.
Updated hyperlink.
3.015: New question, "Where can I get GLUT?"
3.025: New question, "The GLUT source code license is very restrictive. Is there an alternative?
3.027 New question, "Why does glutTimerFunc() only execute my callback once?"
3.040: Updated hyperlink.
3.110: Updated hyperlink.
4.040: Updated hyperlink.
4.060: Updated hyperlink.
5.030: Added information on selecting a software-only pixel format.
5.121: Added information.
5.150: Added information.
5.180: Updated hyperlink
5.190, 5.200, 5.210: Added lots of additional information.
9.005: Fixed typo.
9.085: Clarified use of trig functions.
9.130: Added information.
10.010: Added link to new culling tutorial. Updated and added links regarding texture mapped fonts.
21.090: Updated hyperlink.
22.010: Changed hyperlink.
23.030: Added information on OpenGL 1.3 and the proposed OpenGL 2.0.
23.050: Added information.
24.040: Updated hyperlink.
24.140: Added information.
24.150: Removed GPT information and added GLAnalyze Pro information.
Appendix B: Added information on weight.cpp.
viewcull.c: Fixed bounding box initialization typo.
weight.cpp: New file.
March 8, 2001 history.htm: New file, links on OpenGL's history.
Table of Contents: Added link to history.htm as Appendix C.
2.020: Fixed broken hyperlink to online blue book.
January 17, 2001 2.080: Removed copywritten material and added a public domain replacement.
October 15, 2000 Table of Contents: Version is now present in masthead.
Table of Contents: Corrected Kanji characters.
7.030: Added more information on multiple monitor support.
17.010, 17.030: Repaired or removed broken links.
October 8, 2000 source.htm: New file, a consolidated index to FAQ source code.
Table of Contents: Added links to German and Japanese translations.
Table of Contents: Added link to source.htm as Appendix B.
2.005: Fixed broken link.
2.010: Added information.
2.110: Added information.
5.030: Added information on disabling hardware rendering.
5.070: Added information.
5.080: Added information.
5.121: New question, "
Why does my double buffered window appear incomplete or contain black stripes?"
5.160: Fixed HTML.
5.180: New question, "Where can I find MFC examples?"
5.190: New question, "What do I need to know about mixing WGL and GDI calls?"
5.200: New question, "Why does my code crash under Windows NT or 2000 but run fine under 9x?"
5.210: New question, "How do I properly use WGL functions?"
7.030: New question, "How can I use multiple monitors?"
8.110: New question, "How can I create a stereo view?"
9.005: Added information.
9.162: New question, "How can I transform an object with a given yaw, pitch, and roll?"
10.020: Added information.
18.140: Added information.
24.160: Added information.
viewcull.c: Fixed bug with incorrect matrix mode.
August 24, 2000 Table of Contents: Added access to mslinks.htm as an appendix in the main table of contents
1.031: New question, "Printing the PDF FAQ"
lookat.cpp: Fix comment typo.
August 1, 2000 mslinks.htm: New file, contains links to OpenGL information on Microsoft Web sites.
2.005: Added information.
2.010: Added link to mslinks.htm.
2.050: Added information.
2.080: Fixed incorrect parameters to XCreateWindow().
2.160: New question, "What are the OpenGL Conformance Tests?"
3.020: Fixed typo.
5.010: Added link to mslinks.htm.
5.050: Added information.
5.150 New question, "What do I need to know to use OpenGL with MFC?"
5.160: New question, "How can I use OpenGL with MFC?"
5.170: New question, "Is OpenGL inherently slower when used with MFC?"
6.010: New question, "How do I use overlay planes?"
7.020: Added information.
9.001: Fixed hyperlink.
17.010: Removed broken hyperlink.
23.010: Added information.
23.090: Added information.
24.050: Fixed hyperlink.
July 6, 2000 2.005: Added information.
2.020: Added hyperlink to online OpenGL Reference Manual.
3.030: Corrected code snippet.
3.070: Added information.
3.090: Added information.
4.020: Added hyperlink to GLE web site.
5.040: Added information.
7.020 New question, "What user interface system should I use?"
9.011 New question, "How are coordinates transformed? What are the different coordinate spaces?"
16.150: New question, "How can I use vertex arrays to share vertices?"
17.010: Added information.
17.030: Added additional links to GLTT.
21.090: Added information.
21.110: Added link to source for using TGA files as texture maps. Corrected bogus hyperlink.
22.020: Added information.
22.100 New question, "How doI make triangle strips out of triangles?"
23.070: Added link to modified glext.h for hiding function pointers.
23.090: Added direct links to glext.h, wglext.h, and glxext.h.
24.040: Added information.
24.050: Added information.
24.150: Added link to Intel's GPT.
viewcull.c: Comment tweak.
June 6, 2000 Added a link to GLTT in question 17.030.
June 3, 2000 Updated with miscellaneous corrections and additional information.
May 30, 2000 Fixed HTML problems in index.htm, and sections 1 and 2.
May 29, 2000 Updated with miscellaneous corrections..
May 28, 2000 Version 1.0. Significant changes include a full technical edit for hyperlinks, notational conventions, grammar, and spelling. Filled in many holes. Corrected lots of incorrect information.
April 16, 2000 Beta version.
March 19, 2000 Updated with miscellaneous corrections, additions, and changes.
March 12, 2000 Alpha version.
Column Header
Column Footer