- Paperback: 1248 pages
- Publisher: Addison-Wesley Professional; 4 edition (June 28, 2007)
- Language: English
- ISBN-10: 0321498828
- ISBN-13: 978-0321498823
- Product Dimensions: 7.4 x 1.6 x 9 inches
- Shipping Weight: 3.8 pounds
- Average Customer Review: 26 customer reviews
- Amazon Best Sellers Rank: #819,000 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
OpenGL SuperBible: Comprehensive Tutorial and Reference (4th Edition) 4th Edition
Use the Amazon App to scan ISBNs and compare prices.
There is a newer edition of this item:
All Books, All the Time
Read author interviews, book reviews, editors picks, and more at the Amazon Book Review. Read it now
Customers who bought this item also bought
What other items do customers buy after viewing this item?
About the Author
Richard S. Wright, Jr.has been using OpenGL for more than 12 years, since it first became available on the Windows platform, and teaches OpenGL programming in the game design degree program at Full Sail in Orlando, Florida. Currently, Richard is the president of Starstone Software Systems, Inc., where he develops third-party multimedia simulation software for the PC and Macintosh platforms using OpenGL.
Previously with Real 3D/Lockheed Martin, Richard was a regular OpenGL ARB attendee and contributed to the OpenGL 1.2 specification and conformance tests. Since then, Richard has worked in multidimensional database visualization, game development, medical diagnostic visualization, and astronomical space simulation.
Richard first learned to program in the eighth grade in 1978 on a paper terminal. At age 16, his parents let him buy a computer with his grass-cutting money instead of a car, and he sold his first computer program less than a year later (and it was a graphics program!). When he graduated from high school, his first job was teaching programming and computer literacy for a local consumer education company. He studied electrical engineering and computer science at the University of Louisville’s Speed Scientific School and made it half way through his senior year before his career got the best of him and took him to Florida. A native of Louisville, Kentucky, he now lives with his wife and three children in Lake Mary, Florida. When not programming or dodging hurricanes, Richard is an avid amateur astronomer and an Adult Sunday School teacher.
Benjamin Lipchak graduated from Worcester Polytechnic Institute with a double major in technical writing and computer science. “Why would anyone with a CS degree want to become a writer?” That was the question asked of him one fateful morning when Benj was interviewing for a tech writing job at Digital Equipment Corporation. Benj’s interview took longer than scheduled, and he left that day with job offer in hand to work on the software team responsible for DEC’s AlphaStation OpenGL drivers.
Benj’s participation in the OpenGL Architecture Review Board began when he chaired the working group that generated the GL_ARB_fragment_program extension spec. While chairing the Khronos OpenGL Ecosystem Technical SubGroup, he established the OpenGL SDK and created the OpenGL Pipeline newsletter, of which he remains editor.
Benj will now participate in the Khronos OpenGL ES Working Group. After 12 years of OpenGL driver development and driver team management at DEC, Compaq, and ATI, he is headed for smaller pastures. Benj recently became manager of AMD’s handheld software team. Although the API is familiar, the new challenges of size and power consumption make for a great change of scenery. In his fleeting spare time, Benj tries to get outdoors for some hiking or kayaking. He also operates an independent record label, Wachusett Records, specializing in solo piano music.
Nicholas Haemel, developer at AMD in the Graphics Products Group, was technical reviewer for OpenGL SuperBible, Third Edition, and contributed the chapters on GLX and OpenGL ES.
Excerpt. © Reprinted by permission. All rights reserved.
My career has been built on a long history of making "stupid" choices and accidentally being right. First, I went to Microsoft's DOS, instead of the wildly popular CP/M. Later, I recall, friends counseled me that Windows was dead, and too hard to program for, and that OS/2 was the future (you couldn't lose by sticking with IBM, they'd say).
Just got lucky, I guess.
There were a few other minor wrong turns that just happened to fortunately have me pointed away from some other collapsing industry segment, but my next really big stupid decision was writing the first edition of this book. I had already built a nice comfortable career out of fixing SQL database problems, and was making the transition to large-scale enterprise IT solutions in the healthcare industry. A book on OpenGL? I had no idea what I was doing. The first time I read the official OpenGL specification, I had to all but breathe in a paper bag, my first co-author quit in disgust, and the whole project was very nearly canceled before the book was half-finished.
As soon as the book came out, I had some meager credibility outside my normal field of expertise. I was offered a job at Lockheed-Martin/Real3D doing "real" OpenGL work. My then-current boss (God bless you, David, wherever you are!) tried really hard to talk me out of throwing my career away. Everybody knows, he insisted, that whatever Microsoft does is going to be the way the industry goes, and Microsoft's Taligent (no, not the operating system, but a 3D standard predating Direct 3D) graphics platform was going to bury OpenGL into obscurity. Besides, there was only one other book on OpenGL in existence; how big a thing could it possibly be?
Eleven years have passed, and as I finish yet the fourth edition of this book (and looking at a shelf full of OpenGL books), the number of people reading this who remember the short-lived hype of Taligent would probably fit in the back of my minivan. An OpenGL engineer I used to know at IBM had in her e-mail signature: "OpenGL. It's everywhere. Do the math." This has never been truer than it is today.
OpenGL today is the industry-leading standard graphics API on nearly every conceivable platform. This includes not only desktop Windows PCs and Macs, but UNIX workstations, location-based entertainment systems, major game consoles (all but one), hand-held gaming devices, cellphones, and a myriad of other embedded systems such as avionic and vehicle instrumentation.
Across platforms, OpenGL is the undisputed champion of 3D content creation applications, 3D games, visualization, simulation, scientific modeling, and even 2D image and video editing. OpenGL's widespread success can be attributed to its elegance and ease of use, its power and flexibility, and the overwhelming support it has received from the developer and IHV communities. OpenGL can be extended as well, providing all the benefits of an open standard, as well as giving vendors the ability to add their own proprietary added value to implementations.
You have probably heard that programmable hardware is the future of 3D graphics programming, and of graphics APIs. This is no longer true. Programmable hardware is no longer in the future; it is here now, today, even on the lowest cost motherboard embedded 3D chipsets. It is not a fluke that this edition follows the last at the closest interval of the series. The pace of evolving graphics technology is simply staggering, and this edition brings you up-to-date on the now-latest OpenGL version 2.1.
We have reinforced the chapters on fixed-pipeline programming, which is not going away anytime soon, and have affectionately deemed them "The Old Testament."; still relevant, illustrative, and the foundation on which the "New Testament" of programmable hardware is based. I find the analogy quite appropriate, and I would refute anyone who thinks the fixed pipeline is completely dead and irrelevant. The rank and file of application developers (not necessarily cutting-edge game developers) would, I'm sure, agree.
That said, we have still trimmed some dead weight. Color Index mode is ignored as much as possible, some old paletted rendering material from the Windows chapter has been pruned, and we have eliminated all the old low-level assembly-style shader material to make room for updated and expanded coverage of the high-level shading language (GLSL). You'll also find a whole new chapter on OpenGL on hand-held systems, totally rewritten Mac OS X and Linux chapters, and a really great new chapter on advanced buffer techniques such as offscreen rendering, and floating-point textures.
Another big change some readers will notice is that the OpenGL SuperBible has been acquired and adopted into the Addison-Wesley Professional OpenGL series. I can't begin to express how grateful I am and humbled I feel by this honor. I myself have worn out the covers on at least one edition of every volume in this series.
One of the reasons, I think, for the longevity of this book has been the unique approach it takes among OpenGL books. As much as possible, we look at things through the eyes of someone who is excited by 3D graphics but knows very little about the topic. The purpose of a tutorial is to get you started, not teach you everything you will ever need to know. Every professional knows that you never reach this place. I do occasionally get some criticism for glossing over things too much, or not explaining things according to the strictest engineering accuracy. These almost never come from those for whom this book was intended. We hope for a great many of you that this will be your first book on OpenGL and 3D graphics. We hope for none of you that it will be your last.
Well, I did make one really "smart" decision about my career once. Once upon a time in the early 1980s, I was a student looking at a computer in an electronics store. The salesman approached and began making his pitch. I told him I was just learning to program and was considering an Amiga over his model. I was briskly informed that I needed to get serious with a computer that the rest of the world was using. An Amiga, he told me, was not good for anything but "making pretty pictures." No one, he assured me, could make a living making pretty pictures on his computer. Unfortunately, I listened to this "smart" advice and regretted it for over ten years. Thank God I finally got stupid.
As for making a living "making pretty pictures"? Do the math.
Oh, and my latest stupid decision? I've left Windows and switched to the Mac. Time will tell if my luck holds out.
Richard S. Wright Jr.
Preface to the Previous, Third Edition
I have a confession to make. The first time I ever heard of OpenGL was at the 1992 Win32 Developers Conference in San Francisco. Windows NT 3.1 was in early beta (or late alpha), and many vendors were present, pledging their future support for this exciting new graphics technology. Among them was a company called Silicon Graphics, Inc. (SGI). The SGI representatives were showing off their graphics workstations and playing video demos of special effects from some popular movies. Their primary purpose in this booth, however, was to promote a new 3D graphics standard called OpenGL. It was based on SGI's proprietary IRIS GL and was fresh out of the box as a graphics standard. Significantly, Microsoft was pledging future support for OpenGL in Windows NT.
I had to wait until the beta release of NT 3.5 before I got my first personal taste of OpenGL. Those first OpenGL-based screensavers only scratched the surface of what was possible with this graphics API. Like many other people, I struggled through the Microsoft help files and bought a copy of the OpenGL Programming Guide (now called simply "The Red Book" by most). The Red Book was not a primer, however, and it assumed a lot of knowledge that I just didn't have.
Now for that confession I promised. How did I learn OpenGL? I learned it by writing a book about it. That's right, the first edition of the OpenGL SuperBible was me learning how to do 3D graphics myself…with a deadline! Somehow I pulled it off, and in 1996 the first edition of the book you are holding was born. Teaching myself OpenGL from scratch enabled me somehow to better explain the API to others in a manner that a lot of people seemed to like. The whole project was nearly canceled when Waite Group Press was acquired by another publisher halfway through the publishing process. Mitchell Waite stuck to his guns and insisted that OpenGL was going to be "the next big thing" in computer graphics. Vindication arrived when an emergency reprint was required because the first run of the book sold out before ever making it to the warehouse.
That was a long time ago, and in what seems like a galaxy far, far away…
Only three years later 3D accelerated graphics were a staple for even the most stripped-down PCs. The "API Wars," a political battle between Microsoft and SGI, had come and gone; OpenGL was firmly established in the PC world; and 3D hardware acceleration was as common as CD-ROMs and sound cards. I had even managed to turn my career more toward an OpenGL orientation and had the privilege of contributing in some small ways to the OpenGL specification for version 1.2 while working at Lockheed Martin/Real 3D. The second edition of this book, released at the end of 1999, was significantly expanded and corrected. We even made some modest initial attempts to ensure that all the sample programs were more friendly in non-Windows platforms by using the GLUT framework.
Now, nearly five years later (eight since the first edition!), we bring you yet again another edition, the third, of this book. OpenGL is now without question the premier cross-platform real-time 3D graphics API. Excellent OpenGL stability and performance are available on even the most stripped-down bargain PC today. OpenGL is also the standard for UNIX and Linux operating systems, and Apple has made OpenGL a core fundamental technology for the new Mac OS X operating system. OpenGL is even making inroads via a new specification, OpenGL ES, into embedded and mobile spaces. Who would have thought five years ago that we would see Quake running on a cellphone?
It is exciting that, today, even laptops have 3D acceleration, and OpenGL is truly everywhere and on every mainstream computing platform. Even more exciting, however, is the continuing evolution of computer graphics hardware. Today, most graphics hardware is programmable, and OpenGL even has its own shading language, which can produce stunningly realistic graphics that were undreamed of on commodity hardware back in the last century (I just had to squeeze that in someplace!).
With this third edition, I am pleased that we have added Benjamin Lipchak as a coauthor. Benj is primarily responsible for the chapters that deal with OpenGL shader programs; and coming from the ARB groups responsible for this aspect of OpenGL, he is one of the most qualified authors on this topic in the world.
We have also fully left behind the "Microsoft Specific" characteristics of the first edition and have embraced a more multiplatform approach. All the programming examples in this book have been tested on Windows, Mac OS X, and at least one version of Linux. There is even one chapter apiece on these operating systems, with information about using OpenGL with native applications.
Richard S. Wright Jr.
Top customer reviews
Be warned, however, that while the book gives a good high-level view of concepts, it is of quite poor quality with respect to details. The code examples in the book are literally riddled with errors and omissions. The full set of example source can be downloaded from the opengl.org web site, and seems to include corrections to most or all of the errors in the printed text. Were it not for this saving grace, I would have felt compelled to rate the book far lower.
As it stands, I must rate the book as merely OK. The high-level concepts are presented well, but the frequency of erroneous details significantly detracts from one's confidence in the overall quality and accuracy of the work.
One of the first things you notice while reading this book is that the authors don't take the liberty to explain the math needed for CG. I mean, they do explain it to some extend, but most of the details are hidden behind a library. For example, they talk about how linear transformations are used and their properties, but they care not show you how to construct many of the transformations they use. At one point, they use a shadow-projection matrix that came out of nowhere. When you inspect the code, you can see it came from their library. When you see the library, it is totally and wholly uncommented. Luckily for me my background in CG is pretty strong, so I knew how to derivative the matrix (with the help of Akenine-Moeller et al's book ; ). This is also true for anything mathematically complex, not just linear transformations. The chemistry goes a little something like this:
Question: Want to calculate normals from a triangle?
Answer: Use the library!
Question: Want to do intersection tests?
Answer: Use the library!
Question: Want to ...
Answer: Use the library!
Question: But I didn't even fin...
Answer: Use the library!
CG needs math. This is a universal truth. So, because this book tries to do everything without math, imagine how bland the CG explanations turn out to be! Specially since many (most?) OpenGL commands are math-related. Actually, how you use the API and the programmable pipeline depends on the "mathematical state" of the "OpenGL machine" (if you let me call it like that). Even when the authors are explaining OpenGL commands that are more graphics-related, they fail miserably because their explanation is way too soft in theory to be useful.
Safe for the most basic concepts, I simply can't see anyone learning anything from this book. The authors make sure you can run a lot of code a lot of times. So yes, you see results quickly, that is true. But those are results you don't understand. You may end with some intuition of what a particular OpenGL function does, and you might be pumped because you have seen a lot of action without having to really put you mind into it. But I can bet that in the end no reader could put up a decent program using what the book has "taught" her. Many a friend has tried to begin CG with this book and have failed exactly for this reason. My advice is to stay away from it unless you already have a pretty decent background on CG. But if you do, why not get the Red Book instead?
The author describes a great deal of OpenGL concepts, gradually becoming more advanced and building upon prior examples. There are code listings to be found which greatly aid in the understanding of OpenGL. The author described every part of necessary code before listing the final result. I liked the way that only relevant code was shown so as to minimize program listings - once we know how to initialise a window we don't need to see it again for example.
The book is quite fat and when you consider that the book is not one of those filled with a majority of program listings, gives you an idea to amount of rich information to be found inside. Having said that, full sample source code is available from their web site.
This is a brilliant book, a must perhaps for new OpenGL'ers and those experienced but new to the 4th Edition.
However after a few chapters I gave up, because it takes me longer to read
the chapter than simply write a program and figure the thing out by myself.
All these books contain far too much "filler", so I resort to highlight the sentences
with a marker pen which really matter. The entire book could have been written in half the pages.
I do not care for Glut very much because of the concept of callback functions for everything either.
All the author needs to assume is that the reader speaks English and programs in C.
There should be one and only one "framework" program in Windows and one in Linux
to test the examples. And from then on it is a single function call only to every new feature.