While not an exhaustive list, here are a few titles which I have found particularly useful and well-written:
- Effective C++ and More Effective C++ by Scott Meyers: There is a great deal of useful information in here about C++, all divided into manageable “items.” C++ is a very, very large language to learn, with many advanced techniques floating around. You need to be pretty well-advanced in your knowledge of C++ to get a lot out of these two books, but if you are, buy them.
- Code Complete 2nd Edition by Steve McConnell: A tome-like book which teaches you good programming practices: how to write good code, how to comment it, conventions, OOP, and a ton of other things. One of the best things about this book is that it’s very readable. This title is especially useful if you will be programming alongside other people, which you probably will be (unless you’re just a hobbyist).
- C++ Primer by Lippman: C++ Primer Plus is more tuned for beginners, this one has more advanced information with a small section dedicated to C++ fundamentals. If you want to know something about C++ or parts of the STL, it’s probably in here. Very useful, with code samples, pitfalls, and syntax references all over.
- The C++ Standard Library by Josuttis: While it may be missing some information with the next update of the STL, this book is a great reference or tutorial on the STL, which is a library of many useful data structures and algorithms. Need info on iterators? Vectors? Multimaps?? Which data structure to use? It’s here.
- Introduction to 3D Game Programming with DirectX 9.0c: A Shader Approach by Luna: I’m using this as a supplement for my 3D course. Some of the best examples, code, and explanations on DirectX I’ve seen. All those buzzwords you hear when people talk about 3D graphics are explained, with text, code samples, and demo programs. There are exercises included as well. Note that even though the shader section may seem small, they are introduced gradually throughout the book.