PDA

View Full Version : OpenGL Book recommendation



Almirante
12-28-2010, 12:41 AM
I am a beginner and am going through the OLG spec. However, I would like to get a book and was wondering between the following.
1. The superBible - 5th edition
2. The RedBook - 7th edition

Any recommendation?

Thanks

Dark Photon
12-28-2010, 08:18 AM
I don't have a SuperBible newer than the 2nd edition, so I can't give you a direct comparison of the two editions you mentioned. But I can tell you the Red Book 7th is a good choice. It has a good description of the foundations and builds up gradually.

SuperBible 5th says it focuses on OpenGL 3.3 CORE profile. So if you know you're only targeting GL3.3+ and never want to use any of the older compatibility profile functionality, then you might consider this book. Learning real-time 3D without the built-in conveniences of the COMPATIBILITY profile is harder without some helper libraries. And if you are going to use helper libs, you might as well just use GL as that helper lib until you're ready to go pure-core with your code. It's well documented, and there are tons of tutorials out there on that.

Alfonse Reinheart
12-28-2010, 10:09 AM
Learning real-time 3D without the built-in conveniences of the COMPATIBILITY profile is harder without some helper libraries. And if you are going to use helper libs, you might as well just use GL as that helper lib until you're ready to go pure-core with your code.

This isn't true at all. The 5th Edition Superbible alone proves that, as well as the ever growing list of core-only OpenGL tutorials.

Writing core OpenGL code does not require rewriting anything in the compatibility profile. Learning core OpenGL does not require rewriting anything in the compatibility profile. You would need mesh loading code for either one if you intend to use complex meshes. You would need code to set up materials, whether it's core GLSL shaders or compatibility fixed-function. You would need code to load textures. And so on.

About the only thing you might want from compatibility is a matrix stack. Of course, seeing an actual matrix stack object makes it easier to understand what's going on, rather than hiding the details in arbitrary OpenGL function calls.

If you're going to be a graphics programmer, you need to know shaders. Period. And if you want to learn shaders, the most effective way to do so is to start with them, rather than wasting your time learning a bunch of stuff that will be of no value later. Which core OpenGL-based learning forces you to do.

bcthund
12-28-2010, 05:24 PM
I started learning opengl using the superbible 4th edition and it was very easy. When I moved on to the 5th edition it was very confusing changing from the deprecated features to the new methods. I think if you ever want to get serious with opengl it would probably be better to start with the 5th edition rather than use compatibility so you know what you are doing from the start, even though it might be a bit slower getting started.

I read once that learning C and then trying to learn C++ later requires you to "unlearn" many common practices in C for newer and more efficient methods in C++. I view the change between 4th and 5th edition of the superbible to be of the same issue. (Personally, that is.)

I don't have the RedBook so I can't comment on that other than I read some negative reviews about the book still teaching deprecated features. It was also published in July 2009, while the superbible 5th edition came out in August 2010.

Dark Photon
12-28-2010, 07:23 PM
Learning real-time 3D without the built-in conveniences of the COMPATIBILITY profile is harder
without some helper libraries.
This isn't true at all. The 5th Edition Superbible alone proves that, as well as the ever growing list
of core-only OpenGL tutorials.
There's a difference between "impossible" and "harder". As evidenced by the amount of one-off helper library stuff that the SuperBible 5th examples need to include for even trivial examples. Redbook examples need that? Nope. My opinion stands.

The main issue is whether you want to use canonical helper routines available pretty much everywhere on the desktop, built into the GL lib itself, and well documented in many tutorials/books/etc. when you're starting out as a newbie, OR helper routines that are specific to a particular book or application. No right answer here. It's a matter of personal preference, influenced by what you want to do with GL.

There's also a difference between fact and opinion, which you seem to have missed (hint: "true"/"isn't true" is for the former). We each have our own "opinion", and that's fine.


I read once that learning C and then trying to learn C++ later requires you to "unlearn" many common practices in C for newer and more efficient methods in C++. I view the change between 4th and 5th edition of the superbible to be of the same issue. (Personally, that is.)
Yeah, though in some ways this analogy is better applied as starting with C++ and going to C ("oh, you want those high level conveniences? Sorry, can't have 'em. You have to understand the underlying techniques and implement 'em yourself. Or borrow them from somebody else."). Just what you want when you're a newbie trying to understand a small portion of the big picture just to get your first lit triangle to render.

Is core-profile where you'll eventually want to go? Possibly.

Is it where you want to start? Not IMO, unless you're already a 3D graphics geek. I'd start with compatibility-profile (core+conveniences) to make your life easier until you've got your "graphics legs".