Book Suggestions for Beginners

Hi, I’m a high school student interested in learning OpenGL next year. After scouring the internet for quite some time I found that most tutorials online are fairly outdated (for example, the NeHe series) and that a published book seemed to be the way to go. In essence, my question is, what would be (in your opinion) the best book for a beginner to learn several rendering methods, using OpenGL, from the ground up.

Over the past several years I’ve taught myself languages such as C++ and Python so my general programming knowledge is certainly not lacking, that being said my experience in the graphics end of the field is less than satisfactory. Because of this I’m looking for a book that takes you from setting up your first OpenGL project (including dependencies and such) all the way to some more advanced techniques (shaders for example). Another thing I am interested in taking a look at is volumetric rendering with voxels as that seems to be an area that the field is heading towards, as well as an area that is going to grow vastly in the coming years.

Any book that is up to date and contains most or all of this information (of course the beginner material has priority) in which the material could be covered in a relatively short period of time would be most suitable. I’m doing an Independent Directed Study next year so most of what ill be learning should be covered in a semester or two. Anything you can suggest would be of great help.

OpenGL Superbible 5th edition :
http://www.starstonesoftware.com/OpenGL/

Online book :
http://www.arcsynthesis.org/gltut/

Rather than voxels, distance functions used in raymarching can be very efficient for volumetric rendering :

http://www.arcsynthesis.org/gltut/

For Shaders: “OpenGL 4.0 Shading Language Cookbook” by David Wolff

For 3D Graphics in general (understanding the concepts and math behind it etc): “Real-Time Rendering” by Tomas Akenine-Möller

I’m not aware of a good up-to-date OpenGL book :frowning:

Personal tip: If a tutorial or book starts with a glBegin()… example, discard it.

Thanks for the suggestions, funnily enough, during my own previous searches, I had stumbled upon the same online book and distance fields you mentioned. When I tried taking a look at the tutorials in the online book, I ran into an error when building the projects. After going through the entire process of using premake4 to create the project files (I built them for CodeBlocks as that’s what I plan on using), and building the unofficial SDK for both debug and release, I tried to build the framework project in the tutorials and found an error in the Scene.cpp file when it tried to use the “typename” keyword. The exact error was “error using ‘typename’ outside of template”. After trying several methods I ended up deleting typename wherever it popped up in the program, after which it seemed to build perfectly fine. Unfortunately when I built the tutorial files themselves I get the error “cannot find -lglloadD” which is where I’m stumped. I noticed something in the online book that mentioned different file extensions (*.lib -> *.a) on certain systems and wondered if that might be the problem but that’s as far as I’ve gotten. Any ideas?