ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/libgender/view.C
Revision: 1.2
Committed: Sun Oct 3 22:46:03 2004 UTC (22 years ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.1: +2 -2 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #include <cmath>
2    
3     #include "oct.h"
4     #include "view.h"
5    
6 root 1.2 draw_context::draw_context (view &v)
7     : v(v), l(0), mode(LIGHTED)
8 root 1.1 {
9     }
10    
11     draw_context::~draw_context ()
12     {
13     }
14    
15     bool draw_context::may_draw (entity_base *e)
16     {
17     if (drawn.find (e) != drawn.end ())
18     return false;
19    
20     drawn.insert (e);
21     return true;
22     }
23    
24     void view::draw (draw_context &ctx)
25     {
26     glViewport (0, 0, w, h);
27    
28     glMatrixMode (GL_PROJECTION);
29     glLoadIdentity ();
30    
31     GLdouble aspect = (GLdouble)w/h;
32     GLdouble zNear = 0.0001;
33     GLdouble zFar = 1000.;
34    
35     GLdouble ymax = zNear * tan (fov * (M_PI / 360.0));
36     glFrustum (-ymax * aspect, ymax * aspect, -ymax, ymax, zNear, zFar);
37    
38     vec3 rz = -d;
39     vec3 rx = cross (u, rz);
40     vec3 ry = cross (rz, rx);
41    
42     GLfloat m[4][4];
43     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;
45     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;
47     glMultMatrixf ((GLfloat *)m);
48     glTranslatef (-p.x, -p.y, -p.z);
49    
50     glMatrixMode (GL_MODELVIEW);
51     glLoadIdentity ();
52    
53     world.draw (ctx);
54     }
55