OpenGL is the open source graphics system you probably need to learn and this is its official guide.

This book, now in its ninth edition covering OpenGL 4.5, is the official guide to OpenGL, but to be honest it really doesn’t do it justice.

It’s not a beginner’s book because it makes little effort to explain the bigger picture and its examples are a little too complicated and under-explained. Also not explained is how to get started. Many beginners will be asking what do I have to download to run an OpenGL program, but there is no answer in the first few chapters. Part of the reason is that there is often nothing to download because OpenGL isn't an SDK. It is a set of drivers and what you have to do to make sure you can run an OpenGL program is update the drivers for the graphics card in use. In most cases recent systems will support at least OpenGL 3. Older systems might have trouble getting beyond OpenGL 1.1.

The code for the book is available on GitHub and currently it assumes Visual Studio 2013 with a promise that it will be updated to 2015 soon. In principle you should be able to run the programs without doing any additional work, but notice that if your graphics drivers aren't up-to-date then not all of the programs will work as they assume OpenGL 4.5

It starts off with a simple sample program. The big problem is that OpenGL 4.5 is much more complex than earlier versions and now we have to use various types of shaders to create a program. You can't really start off explaining how to write shaders so the reader just has to take the supplied code on trust. Unlike learning other types of system you basically have to take the code that you are given and learn to modify it, slowly building up enough understanding to feel comforable with it.

It does get to shaders as soon as it possibly can and Chapter 2 is called Shader Fundamentals. Most readers at this point will think that if this is "fundamentals" keep me away from "advanced". The problem is that without seeing the whole picture seeing just this tiny, but important, part in so much detail is a tough way to proceed. If you already know the basics of 3D graphics - projections, meshes, textures and know roughly how these things fit together then you might make your way to the end of the chapter.

Chapter 3 is where the traditional material on 3D graphics starts. Drawing with OpenGL covers the use graphics primitives - lines, strips and fans. This is where you learn a little about geometry. Chapter 4 moves on to color, pixels and fragments and Chapter 5 continues this topic with a look at transformations and projections. Chapter 6 deals with texture which is followed by an in depth look at lighting. Chapter 8 moves back to textures but procedural textures. The next two chapters are where you get into advanced shaders - tessellation and geometry shaders. The final two chapters deal with computational aspects of OpenGL - memory and writing computational shaders including examples of physical simulation and image processing.

I say final two chapters but the book isn't done. There are eight huge appendices and some of them are important. In particular the first appendix covers the GLFW support library that has been used in all the examples.

Examples are provided, but they aren’t step-by-step and you need to be prepared to do some work to get things working. In many cases you can't get them working without downloading code - shaders for example.

This is not a good book for the complete beginner. Indeed the introduction guides the reader off to a book on more general ideas about computer graphics. The book takes the attitude: "so you know computer graphics and now you want to learn OpenGL". It isn't really a tutorial either. There are no step-by-step instructions to getting started or setup.

If you have already got started with OpenGL then this book is probably going to be valuable to you because it is written by three OpenGL experts and as an annotated reference manual the book is a worthwhile resource.