ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libgender/view.C
(Generate patch)

Comparing libgender/view.C (file contents):
Revision 1.2 by root, Sun Oct 3 22:46:03 2004 UTC vs.
Revision 1.3 by root, Mon Oct 4 02:06:57 2004 UTC

21 return true; 21 return true;
22} 22}
23 23
24void view::draw (draw_context &ctx) 24void view::draw (draw_context &ctx)
25{ 25{
26
27 if (ctx.mode == draw_context::DEPTH)
28 {
29 glEnable (GL_POLYGON_OFFSET_FILL);
30 glPolygonOffset (0, 1);
31 glDrawBuffer (GL_NONE);
32 glDepthFunc (GL_LESS);
33 glDisable (GL_LIGHTING);
34 }
35 else
36 {
37 glDisable (GL_POLYGON_OFFSET_FILL);
38 glDrawBuffer (GL_BACK);
39 glDepthFunc (GL_LEQUAL);
40 glEnable (GL_LIGHTING);
41 }
42
26 glViewport (0, 0, w, h); 43 glViewport (0, 0, w, h);
27 44
28 glMatrixMode (GL_PROJECTION); 45 glMatrixMode (GL_PROJECTION);
29 glLoadIdentity (); 46 glLoadIdentity ();
30 47
31 GLdouble aspect = (GLdouble)w/h; 48 GLdouble aspect = (GLdouble)w/h;
32 GLdouble zNear = 0.0001; 49 GLdouble zNear = 0.001;
33 GLdouble zFar = 1000.; 50 GLdouble zFar = 100.;
34 51
35 GLdouble ymax = zNear * tan (fov * (M_PI / 360.0)); 52 GLdouble ymax = zNear * tan (fov * (M_PI / 360.0));
36 glFrustum (-ymax * aspect, ymax * aspect, -ymax, ymax, zNear, zFar); 53 glFrustum (-ymax * aspect, ymax * aspect, -ymax, ymax, zNear, zFar);
37 54
38 vec3 rz = -d; 55 vec3 rz = -d;
39 vec3 rx = cross (u, rz); 56 vec3 rx = cross (u, rz);
40 vec3 ry = cross (rz, rx); 57 vec3 ry = cross (rz, rx);
41 58
42 GLfloat m[4][4]; 59 gl_matrix &m = ctx.projection;
43 m[0][0] = rx.x; m[0][1] = rx.y; m[0][2] = rx.z; m[0][3] = 0; 60 m(0,0) = rx.x; m(0,1) = rx.y; m(0,2) = rx.z; m(0,3) = 0;
44 m[1][0] = ry.x; m[1][1] = ry.y; m[1][2] = ry.z; m[1][3] = 0; 61 m(1,0) = ry.x; m(1,1) = ry.y; m(1,2) = ry.z; m(1,3) = 0;
45 m[2][0] = rz.x; m[2][1] = rz.y; m[2][2] = rz.z; m[2][3] = 0; 62 m(2,0) = rz.x; m(2,1) = rz.y; m(2,2) = rz.z; m(2,3) = 0;
46 m[3][0] = 0; m[3][1] = 0; m[3][2] = 0; m[3][3] = 1; 63 m(3,0) = 0; m(3,1) = 0; m(3,2) = 0; m(3,3) = 1;
64
47 glMultMatrixf ((GLfloat *)m); 65 glMultMatrixf ((GLfloat *)m.data);
48 glTranslatef (-p.x, -p.y, -p.z);
49 66
50 glMatrixMode (GL_MODELVIEW); 67 glMatrixMode (GL_MODELVIEW);
51 glLoadIdentity (); 68 glLoadIdentity ();
69 glTranslatef (-p.x, -p.y, -p.z);
52 70
53 world.draw (ctx); 71 world.draw (ctx);
54} 72}
55 73

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines