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

Comparing libgender/view.C (file contents):
Revision 1.80 by root, Fri Nov 26 02:38:17 2004 UTC vs.
Revision 1.81 by root, Fri Nov 26 03:48:40 2004 UTC

133 { 133 {
134 matrix &m = perspective; 134 matrix &m = perspective;
135 135
136 m(0,0) = 1.F / xmax; m(0,1) = 0; m(0,2) = 0; m(0,3) = 0; 136 m(0,0) = 1.F / xmax; m(0,1) = 0; m(0,2) = 0; m(0,3) = 0;
137 m(1,0) = 0; m(1,1) = 1.F / ymax; m(1,2) = 0; m(1,3) = 0; 137 m(1,0) = 0; m(1,1) = 1.F / ymax; m(1,2) = 0; m(1,3) = 0;
138 m(2,0) = 0; m(2,1) = 0; m(2,2) = -1e10F / z_far; m(2,3) = 1; 138 m(2,0) = 0; m(2,1) = 0; m(2,2) = -1e10F / z_far; m(2,3) = 0;
139 m(3,0) = 0; m(3,1) = 0; m(3,2) = -1; m(3,3) = 0; 139 m(3,0) = 0; m(3,1) = 0; m(3,2) = -1.F; m(3,3) = 0;
140 140
141 glLoadMatrixf (perspective); 141 glLoadMatrixf (perspective);
142 } 142 }
143 //glFrustum (-xmax, xmax, -ymax, ymax, z_near, z_far); 143 //glFrustum (-xmax, xmax, -ymax, ymax, z_near, z_far);
144 144
155 155
156 vec3 rz = -d; 156 vec3 rz = -d;
157 vec3 rx = cross (u, rz); 157 vec3 rx = cross (u, rz);
158 vec3 ry = cross (rz, rx); 158 vec3 ry = cross (rz, rx);
159 159
160 m(0,0) = rx.x; m(0,1) = rx.y; m(0,2) = rx.z; m(0,3) = 0; 160 m(0,0) = rx.x; m(0,1) = rx.y; m(0,2) = rx.z; m(0,3) = 0;
161 m(1,0) = ry.x; m(1,1) = ry.y; m(1,2) = ry.z; m(1,3) = 0; 161 m(1,0) = ry.x; m(1,1) = ry.y; m(1,2) = ry.z; m(1,3) = 0;
162 m(2,0) = rz.x; m(2,1) = rz.y; m(2,2) = rz.z; m(2,3) = 0; 162 m(2,0) = rz.x; m(2,1) = rz.y; m(2,2) = rz.z; m(2,3) = 0;
163 m(3,0) = 0; m(3,1) = 0; m(3,2) = 0; m(3,3) = 1; 163 m(3,0) = 0; m(3,1) = 0; m(3,2) = 0; m(3,3) = 1.F;
164 164
165 diagfact = abs (rz.x) + abs (rz.y) + abs (rz.z); 165 diagfact = abs (rz.x) + abs (rz.y) + abs (rz.z);
166 //printf ("diagfact = %f\n", diagfact); 166 //printf ("diagfact = %f\n", diagfact);
167 diagfact = sqrtf (3.);//D WHY??? 167 //diagfact = sqrtf (3.);//D WHY???
168 168
169 glMultMatrixf (m); 169 glMultMatrixf (m);
170
171 glTranslatef (-p.x, -p.y, -p.z);
170 172
171 glTranslatef (-p.x, -p.y, -p.z);
172
173 glGetFloatv (GL_MODELVIEW_MATRIX, m); 173 glGetFloatv (GL_MODELVIEW_MATRIX, m);
174 174
175 m = perspective * m; 175 m = perspective * m;
176 176
177 frustum.l = plane ( m(3,0) + m(0,0), m(3,1) + m(0,1), m(3,2) + m(0,2), m(3,3) + m(0,3) ); 177 frustum.l = plane ( m(3,0) + m(0,0), m(3,1) + m(0,1), m(3,2) + m(0,2), m(3,3) + m(0,3) );
271 glDepthFunc (GL_LESS); 271 glDepthFunc (GL_LESS);
272 glColorMask (0, 0, 0, 0); 272 glColorMask (0, 0, 0, 0);
273 glDepthMask (0); 273 glDepthMask (0);
274 glDisable (GL_STENCIL_TEST); 274 glDisable (GL_STENCIL_TEST);
275 glDisable (GL_CULL_FACE); 275 glDisable (GL_CULL_FACE);
276
277 glEnable (GL_DEPTH_CLAMP_NV);
276 278
277 occ_query_material.enable (*this); 279 occ_query_material.enable (*this);
278 280
279 // check occlusion queries 281 // check occlusion queries
280 for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i) 282 for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i)
287 289
288 occ_queries.clear (); 290 occ_queries.clear ();
289 291
290 for (vector<octant *>::iterator i = postdepthlist.begin (); i != postdepthlist.end (); ++i) 292 for (vector<octant *>::iterator i = postdepthlist.begin (); i != postdepthlist.end (); ++i)
291 (*i)->draw_postdepth (*this); 293 (*i)->draw_postdepth (*this);
294
295 glDisable (GL_DEPTH_CLAMP_NV);
292 296
293 first_lighted = true; 297 first_lighted = true;
294 298
295 break; 299 break;
296 300

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines