James M. Van Verth, Lars M. Bishop
Essential Mathematics for Games and Interactive Applications, 2nd edition presents the core mathematics necessary for sophisticated 3D graphics and interactive physical simulations. The book begins with linear algebra and matrix multiplication and expands on this foundation to cover such topics as color and lighting, interpolation, animation and basic game physics. Essential Mathematics focuses on the issues of 3D game development important to programmers and includes optimization guidance throughout. The new edition Windows code will now use Visual Studio.NET. There will also be DirectX support provided, along with OpenGL - due to its cross-platform nature. Programmers will find more concrete examples included in this edition, as well as additional information on tuning, optimization and robustness. The book has a companion CD-ROM with exercises and a test bank for the academic secondary market, and for main market: code examples built around a shared code base, including a math library covering all the topics presented in the book, a core vector/matrix math engine, and libraries to support basic 3D rendering and interaction.
I never got to take a computer graphics course in university, but I want to have a thorough understanding of everything you'd learn in that course. I figure the best way to learn is through practice (programming).
If I were to start an OpenGL program from scratch, and slowly build it up to add new features to understand all of the concepts, what would I cover? And what would be a good project to demonstrate this?
I'm the author of a series of tutorial on the subject :
Regarding your question on the concepts you'll learn, the table of contents can give you a good idea :
Tutorial 1 : Opening a window Tutorial 2 : The first triangle Tutorial 3 : Matrices Tutorial 4 : A Colored Cube Tutorial 5 : A Textured Cube Tutorial 6 : Keyboard and Mouse Tutorial 7 : Model loading Tutorial 8 : Basic shading
Tutorial 9 : VBO Indexing Tutorial 10 : Transparency Tutorial 11 : 2D text Tutorial 13 : Normal Mapping Tutorial 14 : Render To Texture
Math Cheatsheet Useful Tools & Links
Tutorial 12 is done by sb else and is not crucial; Tutorials 15 & 16 are on their way ( baked & real-time shadows )
Of course, you have to keep in mind that you can't get a 'thorough understanding of everything' without a big book. I suggest Real-Time Rendering 3 for a broad, but often not in-depth discussion of, well, almost everything, and an additional math book like Essential Mathematics for Games and Interactive Applications.
What's more, I second walkytalky's proposition of making a FPS from scratch. That's basically what we all did.
I already program in C#, Java and C++ and would like to know if you know good books (wether about OpenGL or DirectX and with any of these languages) that cover video game development and that include a discussion about shaders, special effects, sound and collision detection. I know this may seem a lot, but I searched on Amazon and O'Reilly and didn't find a book that covers all these subjects. I don't know if you have seen a book like this.
A broad (not in depth) book that touches those topics among many others is Core Techniques and Algorithms in Game Programming. I highly recommend it.
[...] this book is exactly what I was looking for. After reading it (and re-reading some passages) the difference with other books on games is appalling: this is a course on games programming, a tool for those who want a formal, well laid-out introduction, that covers all the main topics and leaves few questions unanswered.
I have heard from others that "Essential Mathematics for Games and Interactive Applications" is a good start to building your foundation and (re)familiarizing yourself with the math aspects.
I'm looking into learning the basics of OpenGL only with v.3.0 methods onwards. I've reached the point of needing to use the equivalent of a "camera" [the basic goal is to 'look around with the mouse' in first person]. I did ask a specific question about it but it's probably further into what I should be learning (because I can't easily implement it). I have found several resources on the matter such as this but they may not be ideal or they may be for OpenGL 1.x. methods
What I'm looking for is:
What do Matrices in OpenGL clearly represent? What do they represent in different contexts? (in relation to projection and final projection on the screen)
How can they be manipulated? What matrix should be manipulated to do what? When should it be manipulated? [Coding methods.]
Clear hints on communication of data. How to communicate data in relation to projection paths?
It seems to be an area extremely limited in Internet resources since most engines apparently either are already based on older engines that already do that (transformations / simply looking around with the mouse) or people that do use them are already specialists in areas related and expose little of their knowledge.
I recommend this book : Essential Mathematics
If you can't afford it, which is comprehensible, then the openGL FAQ and Wiki are a good resource : http://www.opengl.org/resources/faq/technical/transformations.htm , especially 9.011 .
 fixed link