Several moths ago I’ve noticed there would be another version of OpenGL Superbible. This time the 7th edition! Without much thinking I quickly I pre-ordered it. Around two weeks ago the book appeared at my doorstep so now I can share my thoughts with you.
Is this book worth buying? Is the new content described in an valuable way? Let’s see…
The first core information: this books covers OpenGL 4.5 - newest version of the API
In the book we can find three parts:
- In Depth
- In Practice
In the first part - Foundations - we can read about the whole graphic pipeline, how data is transformed and rasterized into a triangle. This is a really good introduction to the whole topic and gives high level overview of how triangles appear on the screen. There is also chapter about Math, Buffers and Shading Language.
Equipped with the knowledge from the first module we can now dig further into details of the graphics pipeline: here we can get more about vertex processing, all drawing commands (direct and even indirect versions), geometry shaders and tesselation, fragment processing (framebuffer, antyaliasing, etc) and there is also chapter on Comput Shaders (a separate compute pipeline avauilable on GPUs) and a chapter on monitoring the pipeline (GPU queries).
Then, the third part: In Practice. The authors covers such examples as:
- Lighting models (Blinn-Phong, normal mapping, env mapping, …)
- Non-Photo-Realistic Rendering
- Deferred shading
- Screen space effects
- Fractal rendering
- Distance fields for fonts and shapes
In this part we have also a great chapter about AZDO techniques (Approaching Zero Driver Overhead) and how to debug your OpenGL application.
Some content was removed, though. Now, there are no chapters about platform specific solutions. One reason is the length of the book itself (900 pages!). That new chapter would greatly enlarge the book.
BTW: the github repository with all the source code can be found here: openglsuperbible/sb7code
Some screenshots takes from code examples (more can be found on book’s site, here)
Terrain, Stars, Julia:
I own two previous books: version 1 and version 4. Of course the first version is ancient and the 7th version cannot be compared to that one. But I was really happy to see that there are lots of changes against the 4th edition. So I know that my money wasn’t wrongly invested :)
The idea of separating technical details and practical examples looks really great to me. If I want to refresh knowledge about some specific topic I can easily find it and chapters will contain just the important parts. Another approach is to cover tech details inside some bigger example, and then you need to filter just the information you are looking for.
With OpenGL 4.5 we have several powerful improvements (against 4.3 that was covered in 6th edition of the book): immutable storage for buffers (textures had immutable storage already in the version 4.2), robustness, OpenGL ES compatibility, Direct State Access and some other extensions as well.
I was especially interested in Direct State Access (GL_ARB_direct_state_access). It greatly affects the style of your OpenGL code. Previously you had to bind your objects to specific targets and then perform operations on those objects. Now you can just operate directly on the objects - without binding.
glBindBuffer(GL_ARRAY_BUFFER, bufID); int* ptr = (int*)glMapBufferRange(GL_ARRAY_BUFFER, 0, bufSize, flags);
now you can just call:
glMapNamedBufferRange(bufID, 0, bufSize, flags);
so we do not need to care about existing bounded objects (you need to add code to fetch current binding and restore them after your changes…), conflicts… and there is simply less OpenGL methods to call.
This new style is used across the book, so it’s easy to pick it and apply to own solutions.
Another chapter that got my huge attention was about important new extensions: bindless textures (ARB_bindless_texture) and sparse textures (ARB_sparse_texture). Those extensions are not yet Core, but they are common on newest GPUs (Nvidia - since Fermi, AMD since Radeon 7000, not yet on Intel). It seems that they will be part of the next OpenGL (I hope!). They allow for really efficient texture data management (in the future for generic buffers as well) and are great part of AZDO techniques. I was positively surprised that such quite advanced content was nicely described in Super Bible book.
My final mark: 4.99/5
- targets OpenGL 4.5 - so you are very up to date with modern techniques
- especially the DSA API style has much impact on how you should write new code - forget about most of binding targets!
- chapters on AZDO: bindless, persistent mapping, multithreading, indirect drawing commands.
- lots of examples: divided into ‘tech only’ and ‘practical’
- clear language, very well written
- technical chapters and the whole part of ‘practical usage’
- not much here could be found…
- maybe… this book contains around 900 pages, but is in a paperback form. In my previous book most of color plates pages come off completely. Hard cover would be nice option here.
- and maybe that chapter on platform spec could return, maybe with some info about WebGL/OpenGL ES… but I can imagine this would add at least 100 pages more to the book.
I wish there was another book “Advanced Super Bible” that is published along with the main book, with more examples and even more advanced topics (something like More OpenGL Game Programming). Unfortunately I am aware that this would be awful lots of work and partially such more detailed topics are covered in books like GPU Pro , OpenGL Cookbooks, etc… or OpenGL Insights .
Still, OpenGl Superbible 7th is a really solid book and even more experienced graphics programmers will find it very useful (not just for the reference, but for details about new extensions and AZDO techniques).
- Have you read this book?
- Will you buy it?
- What is your opinion about it?