Top critical review
written in a hurry; contains important errors
on 27 June 2017
Unfortunately this book contains errors: both typos and incorrect program logic. It is also extremely confusing and hard to use. It's not useless, and I have puzzled over it a lot and persevered to extract some value from it, but it could have been so much better.
Here's an example of an important error. On code in page 123 there are three successive calls to glVertexAttribPointer. This function, when used with vertex buffers, works on the currently bound buffer; thus each successive call erases the effect of the last one, because the bound buffer is unchanged. To work properly, the code needs a call to glBindBuffer before each call to glVertexAttribPointer.