… | |
… | |
142 | glLoadIdentity (); |
142 | glLoadIdentity (); |
143 | } |
143 | } |
144 | |
144 | |
145 | void view::begin () |
145 | void view::begin () |
146 | { |
146 | { |
|
|
147 | generation++; |
|
|
148 | |
|
|
149 | glColorMask (1, 1, 1, 1); |
|
|
150 | glDepthMask (1); |
147 | glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
151 | glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
148 | |
152 | |
149 | vislist.clear (); |
153 | vislist.clear (); |
150 | |
|
|
151 | generation++; |
|
|
152 | |
|
|
153 | farlist.clear (); |
|
|
154 | |
|
|
155 | // check occlusion queries |
|
|
156 | for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i) |
|
|
157 | { |
|
|
158 | occ_query oq(*this, i->data, ::occ_query_result (i->id)); |
|
|
159 | i->recv->event (oq); |
|
|
160 | } |
|
|
161 | |
|
|
162 | occ_queries.clear (); |
|
|
163 | |
154 | |
164 | z_far = nz_far; |
155 | z_far = nz_far; |
165 | c_far = nc_far; |
156 | c_far = nc_far; |
166 | |
157 | |
167 | if (z_far < z_near) |
158 | if (z_far < z_near) |
… | |
… | |
196 | //glPolygonOffset (0, 5); |
187 | //glPolygonOffset (0, 5); |
197 | glDisable (GL_MINMAX); |
188 | glDisable (GL_MINMAX); |
198 | glDepthRange (DEPTH_OFFSET, 1.); |
189 | glDepthRange (DEPTH_OFFSET, 1.); |
199 | glDepthFunc (GL_LESS); |
190 | glDepthFunc (GL_LESS); |
200 | glEnable (GL_DEPTH_TEST); |
191 | glEnable (GL_DEPTH_TEST); |
201 | glDisable (GL_LIGHTING); |
|
|
202 | glColorMask (0, 0, 0, 0); |
192 | glColorMask (0, 0, 0, 0); |
203 | glDepthMask (1); |
193 | glDepthMask (1); |
204 | break; |
194 | break; |
205 | |
195 | |
206 | case POSTDEPTH: |
196 | case POSTDEPTH: |
207 | glEnable (GL_DEPTH_TEST); |
197 | glEnable (GL_DEPTH_TEST); |
|
|
198 | glDepthRange (DEPTH_OFFSET, 1.); |
208 | glColorMask (0, 0, 0, 0); |
199 | glColorMask (0, 0, 0, 0); |
209 | glDepthMask (0); |
200 | glDepthMask (0); |
|
|
201 | |
|
|
202 | // check occlusion queries |
|
|
203 | for (vector<oq_data>::iterator i = occ_queries.begin (); i != occ_queries.end (); ++i) |
|
|
204 | { |
|
|
205 | occ_query oq(*this, i->data, ::occ_query_result (i->id)); |
|
|
206 | i->recv->event (oq); |
|
|
207 | } |
|
|
208 | |
|
|
209 | occ_queries.clear (); |
|
|
210 | |
210 | break; |
211 | break; |
211 | |
212 | |
212 | case LIGHTED: |
213 | case LIGHTED: |
213 | glEnable (GL_MINMAX); |
214 | glEnable (GL_MINMAX); |
214 | //glDisable (GL_POLYGON_OFFSET_FILL); |
|
|
215 | glDepthRange (0., 1. - DEPTH_OFFSET); |
215 | glDepthRange (0., 1. - DEPTH_OFFSET); |
216 | glDepthFunc (GL_LESS); |
216 | glDepthFunc (GL_LESS); |
217 | glColorMask (1, 1, 1, 0); |
217 | glColorMask (1, 1, 1, 1); |
218 | glDepthMask (0); |
218 | glDepthMask (0); |
219 | break; |
219 | break; |
220 | } |
220 | } |
221 | |
221 | |
222 | for (vector<octant *>::iterator i = vislist.begin (); i != vislist.end (); ++i) |
222 | for (vector<octant *>::iterator i = vislist.begin (); i != vislist.end (); ++i) |