I just thought I had to write something about how to learn 3D programming, since even though I had some education about this matter in my curriculum at university, it was too abstract (you may also call it “academic”) to be of any use at work.So, after graduating, I often found it hard in the first time to follow my colleagues (that was one of the reasons I changed my job), also I had the feeling that my apport to the game were not as high as other people’s.
Now, in order to improve my understanding of 3D from the fundamentals to the current state of art, I found 3 books to be most useful for learning and I am going to make a quick presentation of them.
Real-Time Rendering (by Thomas Akenine-Möller et al), 3rd edition, this book is IMHO the reference for learning about modern rendering. It starts with the basic explanations about rendering and the maths behind, a history of 3d, and then explains the layout of the graphics pipeline, its evolution and so on. Following chapters cover lighting, materials, up to modern shader programming. The book is quite hard to get, but Amazon has just been restocked. Learn the theory just from this book.
OpenGL SuperBible (by Richard S. Wright et al), 4th edition, forget the red book, this one is the best for learning OpenGL. It presents OpenGL in its whole, from the old fixed function pipeline to the new flexible shader pipe. Work with this book, and you’re likely to become an expert. OpenGL ES is also covered. Along with Real-Time Rendering, this one completes your learning by presenting practical part in an easy to read and to understand form.
3D Math Primer for Graphics and Game Development (by Fletcher Dunn), this one is just about maths and how to implement them in your application. And if you’re going to do 3d rendering, you are going to need maths, and lots of it. This book is also a good reference on functions and algorithms, along with some implementation issues.
IMHO, those 3 books are the absolute reference for beginners and for advanced, or even experts on this field. There may be other books about the same subject, but I think my choice may be helpful for those still in education. What about your opinion? Are there other books that cover the subject in the same manner, e.g. by focussing on DirectX? Thanks for a reply.