page 92 First line of text should refer to the program "marching_squares.c" page 279 Change far to near in the (1,1) and (2,2) elements for P Page 295, section 6.3.1, first line, change L_a to I_a page 296 Figure 6.16 theta left out in (b) to describe angle page 416 change GL_OBJECT_PLANE in glTexGenfv to GL_OBJECT_LINEAR Page 416, change glTexGenfv(GL_S, GL_OBJECT_LINEAR, planes); and glTexGenfv(GL_T, GL_OBJECT_LINEAR, planet); to glTexGenfv(GL_S, GL_OBJECT_PLANE, planes); and glTexGenfv(GL_T, GL_OBJECT_PLANE, planet); page 431: e^(-(0.5z)^2) page 431: GL_EXP2 in code page 433: missing definition of displacement matrix: see page 489. page 451: First equation: Change alpha to a on ambient terms page 463 To get the shader source read in from a file, you need to write a short function to read it line by line; see the Appendix A page 464: glVertexAtrrib4fv(colorAttr, color); page 464: my_angle = 5.0; /* or some other angle */ page 466: gl_Position = vec4(s,s,s,1.0) * (gl_ModelViewProjectionMatrix*gl_Vertex); page 466: middle of page: see Exercise 9.19 page 469 third equation: z0 not y0 page 469 first line of code: uniform vec3 vel; page 488: last line: second t should be b: M = [t b m]^T page 492: GeForce 3 page 495: 9.19 In Section 9.7.1 page 712: Add #include <sys/stat.h> page 777: under I, formatting problems in 2nd, 3rd and 4th entries page 782: first column: nonphotorealistic, 473 page 782: bottom of first column "smooth, page 782: remove "generation" under shadow (second column) Programs All the programs on the web site have been tested on linux and Windows. There are some minor typos in Appendix A which have been corrected in the code on the web. These include: page 666: change each instance of point2. In 4E the typedef for point2 has been replace by using arrays. Hence, void triangle(GLfloat *a, GLfloat *b, GLfloat *c) page 669: add |DEPTH_BUFFER_BIT to clear function call in display() page 681: middle_menu function can be eliminate; it has no body page 687: eliminate ii and jj from ProcessHits function; they are unused page 693: remove line glEnableClientState(GL_NORMAL) (normals are not used in this example so enabling vertex normals causes a seg fault on some systems.) pages 700-701: remove point3 type GLfloat v[3][4] = void normal(GLfloat *p) void divide_triangle(GLfloat *a, GLfloat *b, GLfloat *b, int m) page 705: remove display() from myReshape page 705: add glFlush(); to display()