I have to give the author enormous kudos for tackling this project. Over the course of two volumes (I'm referring to this book and his companion "Advanced" Linux 3D Graphics Programming), he builds, from the ground up, a complete working 3D engine, complete with texture mapping, collision detection and world editing capability.
His writing and explanations on the topics at hand are very well written, and whenever the reader needs a diagram to make sense of something, there's invariably just the right one at hand to help him through it.
It's really amazing, when you step back, to see just what is covered in these books. Not only are all major 3D graphics programming issues dealt with, but the author also takes time to discuss programming topics such as design patterns and why he uses them in his code.
Having said all this, I did find some problems with the books, problems which kept me from giving 5 stars:
1. Some of the code is difficult to follow. Really difficult. The polygon engine created by the author uses double-pointers indexed by arrays, and folks, that gets tough to read after a bit. In particular, I couldn't follow his polygon clipping code very well at all, nor his screen creation code, which involved a lot of bit-shifting, none of which was really explained all that well in the text. A bit of a lapse from the author I thought, very atypical.
2. The author wanted his code to work with fixed and floating point math, and for that purpose he created macros for doing things like multiplication and division. All well and good, but again it hurts readablity to have all of those macros in the code when all you're trying to do is multiply two numbers together. Almost any CPU made in the past five years can handle floating point math very well, and so I don't see the need for fixed-point adjustments in the code. Just an opinion, others can disagree.
3. The sample programs seem a bit lacking. After 300 pages, your reward is to see a program with a few flat-shaded polygons spinning around. It's hard to work up enthusiasm and bull through the book when that's your reward. Sorry if that sounds too harsh!
4. The world editor was written with Perl, and... well, it adds another layer of complexity that maybe didn't need to be there. The syntax gets very scary very quickly.
I could also say something about the fact that the author seems hot to trot for free development tools (Blender for modeling, xxgdb compiler, etc.), when maybe using some low-priced commercial products would have allowed for quicker progress and better results. I'm talking about expensive... tools here, not 3D Studio Max. Again, only one man's opinion here.
Overall, it's a fine two-volume set, and if you want to see a 3D engine built from scratch, take a gander at this and prepare to learn how the magic works. Just don't expect to skate through it with no effort on your part.