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()