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

Comparing libgender/view.C (file contents):
Revision 1.62 by root, Tue Oct 19 16:48:22 2004 UTC vs.
Revision 1.63 by root, Tue Oct 19 18:44:07 2004 UTC

130 //printf ("diagfact = %f\n", diagfact); 130 //printf ("diagfact = %f\n", diagfact);
131 diagfact = sqrtf (3.);//D WHY??? 131 diagfact = sqrtf (3.);//D WHY???
132 132
133 glMultMatrixf (m); 133 glMultMatrixf (m);
134 glTranslatef (-p.x, -p.y, -p.z); 134 glTranslatef (-p.x, -p.y, -p.z);
135 135
136 glGetFloatv (GL_PROJECTION_MATRIX, m); 136 glGetFloatv (GL_PROJECTION_MATRIX, m);
137 137
138 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) ); 138 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) );
139 frustum.r = 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) ); 139 frustum.r = 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) );
140 frustum.b = plane ( m(3,0) + m(1,0), m(3,1) + m(1,1), m(3,2) + m(1,2), m(3,3) + m(1,3) ); 140 frustum.b = plane ( m(3,0) + m(1,0), m(3,1) + m(1,1), m(3,2) + m(1,2), m(3,3) + m(1,3) );
164 164
165void view::begin () 165void view::begin ()
166{ 166{
167 generation++; 167 generation++;
168 168
169 glColorMask (1, 1, 1, 1);
170 glDepthMask (1);
171 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
172
173 vislist.clear (); 169 vislist.clear ();
174 170
175 z_near = max (nz_near, 1.F); 171 z_near = max (nz_near, 1.F);
176 z_far = max (nz_far, z_near * 2.F); 172 z_far = max (nz_far, z_near * 2.F);
177 c_far = nc_far; 173 c_far = nc_far;
194 pass = p; 190 pass = p;
195 191
196 switch (pass) 192 switch (pass)
197 { 193 {
198 case DEPTH: 194 case DEPTH:
195 glColorMask (1, 1, 1, 1);
196 glDepthMask (1);
197
198 glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
199
200 //glEnable (GL_STENCIL_TEST); // for depth-passes
201 //glStencilOp (GL_KEEP, GL_KEEP, GL_REPLACE);
202 //glStencilFunc (GL_LESS, 1, 255);
203
199 //glEnable (GL_POLYGON_OFFSET_FILL); 204 //glEnable (GL_POLYGON_OFFSET_FILL);
200 //glPolygonOffset (0, 5); 205 //glPolygonOffset (0, 5);
201 glDisable (GL_MINMAX); 206 glDisable (GL_MINMAX);
202 glDepthRange (DEPTH_OFFSET, 1.); 207 glDepthRange (DEPTH_OFFSET, 1.);
203 glDepthFunc (GL_LESS); 208 glDepthFunc (GL_LESS);
204 glEnable (GL_DEPTH_TEST); 209 glEnable (GL_DEPTH_TEST);
205 glColorMask (0, 0, 0, 0); 210 glColorMask (0, 0, 0, 0);
206 glDepthMask (1);
207 glDisable (GL_DEPTH_CLAMP_NV); 211 glDisable (GL_DEPTH_CLAMP_NV);
208 212
209 world.detect_visibility (*this); 213 world.detect_visibility (*this);
210 214
211 break; 215 break;
214 glDepthRange (0., 1. - DEPTH_OFFSET); 218 glDepthRange (0., 1. - DEPTH_OFFSET);
215 glDepthFunc (GL_LESS); 219 glDepthFunc (GL_LESS);
216 glColorMask (0, 0, 0, 0); 220 glColorMask (0, 0, 0, 0);
217 glDepthMask (0); 221 glDepthMask (0);
218 glEnable (GL_DEPTH_CLAMP_NV); 222 glEnable (GL_DEPTH_CLAMP_NV);
223 glDisable (GL_STENCIL_TEST);
219 224
220 // check occlusion queries 225 // check occlusion queries
221 for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i) 226 for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i)
222 { 227 {
223 occ_query oq(*this, i->data, ::occ_query_result (i->id)); 228 occ_query oq(*this, i->data, ::occ_query_result (i->id));
227 occ_queries.clear (); 232 occ_queries.clear ();
228 233
229 break; 234 break;
230 235
231 case LIGHTED: 236 case LIGHTED:
237 glClear (GL_STENCIL_BUFFER_BIT);
238 //glEnable (GL_STENCIL_TEST);
232 glEnable (GL_MINMAX); 239 glEnable (GL_MINMAX);
233 glDepthRange (0., 1. - DEPTH_OFFSET); 240 glDepthRange (0., 1. - DEPTH_OFFSET);
234 glDepthFunc (GL_LESS); 241 glDepthFunc (GL_LESS);
235 glColorMask (1, 1, 1, 1); 242 glColorMask (1, 1, 1, 1);
236 glDepthMask (0); 243 glDepthMask (0);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines