I want to start by first saying that before this book, I knew nada (nothing) about 3D Programming. With this book not only I have learned about 3d programming but also have learned about an API that lets me 3D program.
I will not lie though, the book is not easy, but then again 3d programming is a difficult subject.
*Very detailed explanations on every subject. From the math to how a 3d object is represented by triangles goes into very detail. The author takes time to explain everything he considers relevant for a beginner to know and the other not so relevant stuff he points you on the right direction.
*I think the math involved with the camera code could be simplified a little more. I got very confused in this area and almost gave up on the whole book. Thank god I didn't though.
*In chapter 7 the author talks about deferred rendering and how this subject will be talked about in a later chapter, well, I'm on chapter 20 and have not seen one line referring back to this. I doubt it he talks about it in the last 4 chapters since they do not focus on lighting.
*The author sometimes tries to make things a little too rigorous when they could be explained in much simpler terms. For example, the chapter on lighting could use less function graphs and charts and more to the point explanations. Granted that lighting isn't the easiest thing in the world.
Pro or Con? You decide:
*I got the book in the beginning of May and I am just about to finish it. It takes sometime to read, depending on how much time you're dedicating to it of course.
*The format the author uses to load mesh objects onto directx did not sit well with me. But since this is my opinion I will let you be the judge of that.
*Also, I would've loved it if the author would've kept away from the Effects library. Or at least dedicate 1 chapter to NOT using it. For example, teach the reader how to compile shaders and set shaders, how to manage constant buffers and so on. Don't get me wrong the effects library does more than a decent job, but after using other resources to learn how to manage constant buffers without it, I think it would've been better if he didn't use it.
Now, you probably notice there are not too many pros and many more cons, and that I'm still giving this book a 5 star rating. Well, this is the reason:
If it wasn't for this book I would still be wondering where should I start if I want to learn graphics programming, what is the difference between OGL and DX, and so many more questions that are too many to list. This book has given me a "jump start" in my game coding career, from how to program to many best practices. I couldn't thank the author enough for such a master piece. And finally, there is not any other book out there that can even be compared to this one, for both OpenGl and DirectX. If you are like me and have found yourself in a crossroad, get this one, and then you will see how thankful you will be with the author too.
DirectX is just an API, so after reading this book you can very easily go to OpenGL and with a few changes here and there pick it up extremely fast (like I did). It took me a day of reading a horrible book about opengl to understand it as much as I understand direct x, thanks to the base that this book gave me.
After reading this book buy your self a copy of Game Coding Complete (4th edition now, I think!), and you my friend are about 20,000 steps closer to becoming a professional game programmer.
EDIT 1, DEC 06 2012:
I know I recommended people to buy Game Coding Complete after this book, but I actually have a better recommendation, C++ For Game Programmers (Game Development Series).
Don't get me wrong GCC is an excellent book and I'm still reading it, but it is just too windows oriented. In my humble beginner's opinion; if you want to target the largest amount of users, you have to let "the largest amount of users" play your game, and what better way of accomplishing this than by letting ALL the users play your game. This is where C++ Game Programming comes in. This game gives you the basics(and points you to the advance) on how to truly decouple your game, making it a breeze releasing it to different platforms.
PS. Believe it or not, I actually have not written a review of that book as of today. Procrastination....what am I going to do with you!?