… | |
… | |
68 | return true; |
68 | return true; |
69 | } |
69 | } |
70 | |
70 | |
71 | void view::reset_projection () |
71 | void view::reset_projection () |
72 | { |
72 | { |
73 | renormalize (orig, p); |
73 | //renormalize (orig, p); |
74 | |
74 | |
75 | glViewport (0, 0, w, h); |
75 | glViewport (0, 0, w, h); |
76 | |
76 | |
77 | glMatrixMode (GL_PROJECTION); |
77 | glMatrixMode (GL_PROJECTION); |
78 | glLoadIdentity (); |
78 | glLoadIdentity (); |
… | |
… | |
82 | |
82 | |
83 | glFrustum (-ymax * aspect, ymax * aspect, -ymax, ymax, near, far); |
83 | glFrustum (-ymax * aspect, ymax * aspect, -ymax, ymax, near, far); |
84 | |
84 | |
85 | d = normalize (d);//D |
85 | d = normalize (d);//D |
86 | u = normalize (u);//D |
86 | u = normalize (u);//D |
|
|
87 | |
87 | vec3 rz = -d; |
88 | vec3 rz = -d; |
88 | vec3 rx = cross (u, rz); |
89 | vec3 rx = cross (u, rz); |
89 | vec3 ry = cross (rz, rx); |
90 | vec3 ry = cross (rz, rx); |
90 | |
91 | |
91 | matrix &m = projection; |
92 | matrix &m = projection; |
… | |
… | |
93 | m(1,0) = ry.x; m(1,1) = ry.y; m(1,2) = ry.z; m(1,3) = 0; |
94 | m(1,0) = ry.x; m(1,1) = ry.y; m(1,2) = ry.z; m(1,3) = 0; |
94 | m(2,0) = rz.x; m(2,1) = rz.y; m(2,2) = rz.z; m(2,3) = 0; |
95 | m(2,0) = rz.x; m(2,1) = rz.y; m(2,2) = rz.z; m(2,3) = 0; |
95 | m(3,0) = 0; m(3,1) = 0; m(3,2) = 0; m(3,3) = 1; |
96 | m(3,0) = 0; m(3,1) = 0; m(3,2) = 0; m(3,3) = 1; |
96 | |
97 | |
97 | diagfact = abs (rz.x) + abs (rz.y) + abs (rz.z); |
98 | diagfact = abs (rz.x) + abs (rz.y) + abs (rz.z); |
|
|
99 | diagfact = sqrtf (3.);//D WHY??? |
|
|
100 | //printf ("diagfact = %f\n", diagfact); |
98 | |
101 | |
99 | glMultMatrixf (m); |
102 | glMultMatrixf (m); |
100 | glTranslatef (-p.x, -p.y, -p.z); |
103 | glTranslatef (-p.x, -p.y, -p.z); |
101 | |
104 | |
102 | glGetFloatv (GL_PROJECTION_MATRIX, m); |
105 | glGetFloatv (GL_PROJECTION_MATRIX, m); |
… | |
… | |
132 | i->first->event (oq); |
135 | i->first->event (oq); |
133 | } |
136 | } |
134 | |
137 | |
135 | occ_queries.clear (); |
138 | occ_queries.clear (); |
136 | |
139 | |
137 | nextfar = near; |
140 | nextfar = near + 1.F; |
138 | world.detect_visibility (*this); |
141 | world.detect_visibility (*this); |
139 | printf ("far %f nf %f RCP %f,%f,%f +%f\n", far, nextfar, |
142 | printf ("far %f nf %f RCP %f,%f,%f +%f\n", far, nextfar, |
140 | frustum.r.n.x, |
143 | frustum.r.n.x, |
141 | frustum.r.n.y, |
144 | frustum.r.n.y, |
142 | frustum.r.n.z, |
145 | frustum.r.n.z, |