


OpenGL SuperBible 115
Martin Ecker writes "The OpenGL SuperBible, in its vastly expanded fourth edition, is the latest addition to the Addison-Wesley Professional OpenGL series. According to the authors it 'strives to provide the world's best introduction to not only OpenGL, but 3D graphics programming in general.' A tough goal to achieve." Read the rest of Martin's review to see if the book keeps its promise.
OpenGL SuperBible (Fourth Edition) | |
author | Richard S. Wright, Jr., Benjamin Lipchak, Nicholas Haemel |
pages | 1205 |
publisher | Addison-Wesley |
rating | 9/10 |
reviewer | Martin Ecker |
ISBN | 0321498828 |
summary | A solid introduction to OpenGL programming that focuses on both the old-style fixed-function pipeline and new-style shaders. |
The OpenGL SuperBible, is split into three parts, appropriately called the old testament, the new testament, and the apocrypha. Arguably, appendix C, an OpenGL API reference with more than 350 pages, could be considered a fourth part even though it isn't listed as such in the table of contents.
The old testament provides an introduction to both OpenGL programming with the fixed-function pipeline and to the basics of 3D graphics programming. The new testament then moves on to describe how shaders, small programs that run on the GPU (Graphics Processing Unit), allow us to use the programmable features of today's powerful graphics cards. It also contains information on recent advancements of the OpenGL API, such as floating-point textures, pixel buffer objects and framebuffer objects. The apocrypha closes the book with a discussion of how to interface OpenGL with the underlying operating system.
The first part of the book — the old testament — consists of 14 chapters with around 500 pages total. The first chapter gives a general overview of 3D graphics and the various effects that the remaining chapters in this part of the book are going to show how to implement with OpenGL. The writing style is very casual and easy to follow. Especially in these first chapters, the book is very light on mathematics, but does explain some of the basics, such as coordinate systems, some simple vector algebra, and matrices. The second chapter introduces OpenGL and immediately presents a few simple sample programs to wet the reader's appetite. The programs are analyzed in detail with explanations to nearly all lines of code. It should be easy for a beginner to follow and understand the code.
The next few chapters gradually introduce more and more OpenGL API functions intermixed with new 3D graphics concepts, such as rendering points, lines, and polygons in various ways, how to use geometric transformations and projections, and how to use the fixed-function pipeline to render lit objects with simple projective shadows. Eventually, texture mapping is introduced with pretty much everything you need to know about the topic. In particular, multitexturing, the various filtering modes — even anisotropic filtering, texture compression, and using textures with point sprites are discussed. The book continues with an overview of curves and surfaces as supported by the OpenGL Utility library (GLU, for short). The book dates itself a bit here, since this is a software-only, and thus fairly low-performance feature that is rarely ever used in professional software. The same applies to the discussion of feedback and selection, which are not implemented on current graphics hardware and therefore not widely used. After this short excursion down the OpenGL memory lane the book moves on to the fairly recent addition of occlusion queries. Occlusion queries are used to detect complex, occluded objects in the rendered scene, so that they need not be rendered. Most modern-day graphics software that renders dense scenes with a lot of overdraw, such as video games, uses this feature. The old testament closes with a chapter on depth textures, which are prominently applied to render real-time shadow effects.
After laying a solid foundation for 3D graphics programming with OpenGL in the first part, the second part of the book — the new testament — deals with the new era of graphics programming that started a few years ago when the first programmable graphics card came into the market. This part consists of 4 chapters with about 100 pages. The first chapter provides an overview of the programmable pipeline and explains which features of the fixed-function were replaced by shaders. This introduction is followed by a sample program that gives a first glimpse of GLSL, the OpenGL shading language, in which shaders are written. The next chapter is all about vertex shaders and how to implement simple lighting models, fog, and vertex transformations using them. The third chapter is about fragment shading with some interesting post-processing and procedural texture mapping shaders. The final chapter of this part of the book discusses advanced buffers, such as floating-point textures and color buffers, and pixel buffer and framebuffer objects — all recent additions to OpenGL that allow to achieve various effects, such as rendering directly to a texture or creating vertex data on the GPU.
The final part of the book — the apocrypha — consists of 4 chapters explaining how to integrate OpenGL with the underlying operating system, in particular with Windows, Mac OS X, and Linux plus various other Unix flavors. The last chapter of this part of the book is about OpenGL ES, which is a version of OpenGL designed to be used especially on embedded system devices, in particular mobile phones and PDAs, to render real-time, interactive 3D graphics.
The book has a lot of images and diagrams throughout, though unfortunately not all of them are in color. There are however 32 color plates of the most interesting images in the middle of the book. The complete source code of the book, and even precompiled binaries for Windows and Mac OS X, can be downloaded from the book's webpage.
If you are new to both 3D graphics programming and OpenGL with a bit of C/C++ programming experience and you are eager to learn how to develop interactive programs with OpenGL, then this book is exactly right for you. The book is written in an easy to understand style without skimming the details. It is the most comprehensive introduction to OpenGL that doesn't require a lot of previous knowledge I have seen to date. If you already have experience with another graphics API or are well-versed in 3D graphics in general, but want to familiarize yourself with OpenGL, you might also want to consider the OpenGL Programming Guide, also known as the Red Book.
All in all, the OpenGL SuperBible succeeds fairly well in keeping its promise to be the best introduction to OpenGL and 3D graphics programming. Even after you're done working your way through the main parts of the book you will always come back to the handy OpenGL API reference in the appendix of the book.
I have been involved in real-time graphics programming for more than 10 years and work as a professional game developer for High Moon Studios in sunny California.
You can purchase OpenGL SuperBible Fourth Edition from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
SuperJesus? (Score:5, Funny)
Damn, the first thing I thought when I read the title was "Does it come with SuperJesus?"
Re:SuperJesus? (Score:4, Funny)
Re:SuperJesus? (Score:5, Funny)
Dude. Spoilers.
I own this book (Score:1)
[4x1 column vector] . [4x4 matrix] = [4x1 column vector]
Eh? If this is some kind of whacked convention he should really say so. This said, it seems good so far.
Re: (Score:1, Funny)
Re: (Score:2)
I thought something similar and wondered, why would someone want to 3D'ify The SWORD Project [crosswire.org]? What good is a 3D Bible over plain text? Do the letters float or something?
Imagine my surprise when I read
According to the authors it 'strives to provide the world's best introduction to not only OpenGL, but 3D graphics programming in general.' A tough goal to achieve."
When did God get into OpenGL?
Re: (Score:3, Funny)
And what does God need with a Starship?
Re:SuperJesus? (Score:5, Funny)
Shortly after trying Direct3D?
Re: (Score:2)
And it's cherubim
Re: do publishers read??? (Score:1)
Re: (Score:2)
Re:SuperJesus? (Defusing the Humor) (Score:1)
Noun
Singular
bible
Plural
bibles
bible (plural bibles)
1. A comprehensive manual that describes something. (e.g., handyman's bible).
2. (nautical) A holystone.
wait, what? (Score:3, Interesting)
The capitalisation of Bible clearly references the proper noun:
http://en.wiktionary.org/wiki/Bible [wiktionary.org]
Proper noun
1. The Christian holy book.
2. The Jewish holy book that was largely incorporated into the Christian Bible.
3. The analogous holy book of another religion.
4. A specific versio
Re: (Score:2)
That religion is the worship of 3D visual goodness, and programming in general.
Ohm addme padme hum - keep the foo counters turning.
Re: (Score:3, Funny)
And only with a
*ducks*
Don't you mean "according to the publisher"? (Score:2, Flamebait)
Don't you mean "according to the publisher"? You need some kind of marketing background to write that sort of bloated statement. A real tech writer wouldn't try to oversell himself like that.
Re: (Score:2)
Re: (Score:2)
Daniel
Re: (Score:1)
That's a lot to read (Score:2, Funny)
Re: (Score:3, Funny)
Hope that sums it up for you.
Re: (Score:1)
Re: (Score:1)
Re: (Score:2)
Re: (Score:1)
Re: (Score:2)
Re: (Score:1)
Pretty shiny pixels. (Score:2)
Re: (Score:2)
Re: (Score:1)
Re: (Score:1)
Re: (Score:2)
Cross-Platform>DirectX
Re: (Score:2)
Re: (Score:2)
Any truly good 3D-programming book... (Score:5, Funny)
Re: (Score:2)
Re: (Score:2)
Re: (Score:1, Funny)
Blasphemy (Score:3, Funny)
Re: (Score:2, Funny)
Re: (Score:3, Informative)
Re: (Score:1)
Its more open then DirectX.
Open source is a set of principles and practices that promote access to the design and production of goods and knowledge. The term is most commonly applied to the source code of software that is available to the general public with relaxed or non-existent intellectual property restrictions. This allows users to create software content through incremental individual effort or through collaboration. http://en.wikipedia.org/wiki/Open_source [wikipedia.org]
It fits the bill for wiki's open source definition, and my own personal open source definition. Its "relaxed" intellectual property restrictions are what make it fit the bill for me.
Re: (Score:2)
Re: (Score:1)
Re: (Score:2)
So close... (Score:5, Funny)
1: Hey, did you see SuperBible? This thing rocks.
2: SuperBible, wtf?
1: It's God's word in full 3D. You can rotate the book on all 3 axes, flip pages, and it even has full scene rendering during the great flood.
2: That's ridiculous. Who would want that?
1: Bah, at the very least you can use it as a benchmarking program. I'm getting 200FPS at the Sermon on the Mount.
Re:So close... (Score:5, Funny)
The cool part is when they download 10 GB of loaves and fishes over a dialup connection in less than 30 seconds.
Re:So close... (Score:5, Funny)
Re: (Score:2)
fishes 1000000
loaves 1000000
And here's the UltraJesus2000 decompressor:
awk '{for(i=0; i < $2; i++)print $1}'
Warning the copyright on this will expire 90 years after the original author's death. In this case, that will be a very long time.
Re: (Score:1)
Re: (Score:2)
A true test is rendering the raining frogs. The Sermon on the Mount had too many static items to be impressive.
Re: (Score:2)
Re: (Score:2)
*raises hand*
/. were mindblowing. I guess it's world-shattering enough that /. published my submission of the puke saber [slashdot.org] the other day, which is a story on Fox News, which I found on the Drudge Report.
I was getting psyched. Plus the implications of the new direction for
Re: (Score:2)
Re: (Score:1, Funny)
I'm wondering. . . (Score:2)
Sorry, I just couldn't resist. . .
Re: (Score:2)
Re:I'm wondering. . . (Score:5, Funny)
1:5 So then the programmers said, "Let there be anti-aliasing and matrix transformations and hardware support for rendering like the Amiga has," and lo, all of these things came to be on the fourth day. 1:6 And the programmers looked unto all of their creations and gave OpenGL dominion over all hardware accelerated graphics, and on the fifth day they rested.
2:1 But lo, the serpent Microsoft saw OpenGL and said unto him, "You are good, but you could be greater, if you only would listen to me." 2:2 And the serpent took one of OpenGL's ribs and copied OpenGL, and made DirectX. 2:3 And when the programmers looked at what had become of OpenGL, they were angry, and tossed the serpent and DirectX out of the Garden.
Re: (Score:2)
Re:I'm wondering. . . (Score:5, Funny)
I'm a firm believer that OpenGL was created by intelligent design.
But with DirectX, I'm not so sure.
SuperBible implies... the Super Devil? (Score:5, Funny)
Duke: This turn of events came after Vatican scientists announced today, that the devil is not the greatest threat to salvation. Due to last weeks discovery of the Super Devil. Religion reporter Dallas Houston has the story.
Dallas: Thanks Duke, well let me try and get you a clear picture of what we're dealing with here. Here's a photo of the devil, and here's the super devil. Now as you can see, there are some significant differences. The super devil is at least six inches taller, uh, he has a flying motorcycle, and a jar of marmalade that we believe forces you to commit adultery.
Re: (Score:3, Funny)
We know.
Oddly enough.... (Score:5, Interesting)
The OpenGL "Longs Peak" specification is due to be announced in the next few days, it is the first API revamp to break backwards compatibility and pretty much the whole API is going to change, making my lovely new reference book a bit dated. However, the reason I still bought it is because the same concepts can be carried over to the new API pretty easily and I would say 70% of the book will still be relevant to some extend.
Re: (Score:2)
Re: (Score:1)
Also, as I understood it, youll be able to mix 2.1 with longs peak if you wish.
Re: (Score:2)
The Beginning (Score:5, Funny)
In the beginning SGI created a 640x480 palate
And the palate was without form, and void; and darkness was upon the face
And SGI said, Let there be light: and there was light
And SGI saw the light, that it was good: and SGI divided the light from the darkness.
And SGI called the light glEnable (GL_LIGHTING);
Man, they do a good job of telling how OpenGL was created!
Re: (Score:2, Insightful)
Re: (Score:2)
It's better just to encourage the Hittites to write to DirectX so that you can enjoy your leisure time while the Hittites have to keep re-writing their game API's every couple years.
Re: (Score:2)
And SGI wondered why there was no light, and realised he needed to glEnable(GL_LIGHT0)
RegardselFarto
excerpt (Score:5, Funny)
Re: (Score:1)
They Must be Stopped! (Score:1)
Please consider the consequences!
Enough with the bible motif (Score:1)
Re: (Score:1)
Re: (Score:1)
ben
First Version (Score:3, Interesting)
Fat? (Score:1, Flamebait)
Then, no thanks...
Re: (Score:1)
Re: (Score:1)
> and big section headings every other paragraph, to make you feel like you're getting more for your money?
Hey, don't forget the CD with `enhanced content` such as extra chapters which `weren't ready for the book at publication time`!
I learned with this and took a class by the author (Score:5, Informative)
Sounds like a decent book, but.... (Score:1)
The Bible SuperBible... (Score:1)
3D (Score:1)
OpenGL is an interface with the 3-D hardware
1) Isn't OpenGL just an API? If so, then the implementation (whether it is hardware-based or not) is irrelevant.
2) How good is OpenGL for 2-D graphics? Judging, e. g., by what Compiz/Beryl do, it can be successfully used as a base for development of a 2-D user interface as well.
Re: (Score:2, Informative)
Re: (Score:1)
Re: (Score:2)
Source code - where? (Score:2)
All I see on that page is some sample code from examples contained in the book. I was kind of hoping for the actual source code for the book, preferably in LaTeX form.
Selection/Feedback is useless?? (Score:1)
Ben