Unofficial errata from OpenGL Superbible 6th edition Want to add some more? Write to fjabad@dsic.upv.es Paco Abad p.159, last paragraph: nine arrows pointing up and to the [left -> right] p. 228 and 229: remove the void keyword from the invocations to glVertexAttribBinding p. 313: GL_LINE_STRIP_ADJACENCY and GL_TRIANGLE_STRIP_ADJACENCY are missing in table 8.1 p. 319: in listing 8.22, vt is defined in the world space and transformed_normal in camera space. They should not be dot-producted p. 329. In the first block of code, the end of the comment has jumped to the next line (stream 3.) p. 428: In the shader, the matrix should be called rotation_matrix (or in the call to texture it should be called m) p.428: NVidia driver does not compile the line const vec2 pt = gl_PointCoord - vec2(0.5) because the initialization is a non constant expression p. 441. The third code snippet: GL_COMPUTE_WORKGROUP_SIZE should be GL_COMPUTE_WORK_GROUP_SIZE, and the printf should be %d x %d x %d p. 443 In the big matrix, gl_LocalInvocationID.x and .y should be gl_WorkGroupID.x and .y. In the small matrix, the horizontal axis should be labeled as gl_LocalInvocationID.x p. 536: line 2: You can also create *shadow* samplers… p. 537, just before the figure:... a simple scene rendered with the above shader. **There is no shader above** p. 537, last line. If the z coordinate lies between 0 and 1, the scale_bias_matrix in the next page would transform it to the range [0.5, 1]. The projection-view-model matrices transform to -1, 1 both x, y and z (after the perspective division). Moving Z to [0, 1] is a separate step performed by OpenGL.