This is a book for beginning graphics programmers; it can also serve as a good introductory text for those familiar with fixed function-based graphics who want to understand programmable rendering better.
What this book is not is a book for beginning programmers.
You are expected to be able to read C and reasonable C++ code. If “Hello, world!” is the extent of your C/C++ knowledge, then perhaps you should write some more substantial code before proceeding with trying to render images. 3D graphics rendering is simply not a beginner programming task; this is just as true for traditional graphics learning as for modern graphics learning.
These tutorials should be transferable to other languages as well. If you can read C/C++, that is enough to understand what the code is doing. The text descriptions that explain what the code does are also sufficient to get information out of these tutorials.
Any substantial discussion of 3D rendering requires a discussion of mathematics, which are at the foundation of all 3D graphics. This book expects you to know basic geometry and algebra. This book will present the more advanced math needed for graphics as it becomes necessary. But you should have at least a working knowledge of geometry and algebra. Linear algebra is not required.
The source code in this book use OpenGL as its rendering API. You do not need to know OpenGL when starting, but in order to compile and run any of this code, you must have a development environment that allows OpenGL.
Specifically, you will need graphics hardware capable of running OpenGL version 3.3. This means any GeForce 8xxx or better, or any Radeon HD-class card. These are also called “Direct3D 10” cards, but you do not need Windows Vista or 7 to use their advanced features through OpenGL. You should have the most recent version of graphics drivers installed, available on the home page of your graphics card manufacturer. Outside of drivers and the actual tutorial distribution, you will not need to download or install anything else to work with OpenGL.
This book is intended to teach graphics programmers the basics of graphics development. The most important thing you can bring within yourself is a willingness to learn. This also means leaving preconceived notions, and most importantly of all, not trying to learn anything in particular.
Often, programmers will scour the internet or pour over books, looking for information about how to perform some specific task. Once they find it, they will try to copy that code into their application and see if they can make it work. This method can achieve results faster, but it impairs learning by focusing on achieving a certain effect goal instead of truly understanding how it works.
When first approaching this book, you should try to avoid thinking about any specific problem. You may keep a particular problem in the back of your mind, but do not allow the search for a solution to drive your reading. Instead, focus on the material being presented. Once you have finished the book, then you can look back and see if you understand how to solve that problem you wanted to solve.
You may find that you have a better solution than you would have thought of otherwise.