/* pointer to terrain mesh structure */
static GLint mesh;
+double fogDensity = 0.04;
+
/* init_view() -- Setup view parameters */
static void init_view() {
/* if the 4th field is 0.0, this specifies a direction ... */
static GLfloat pos[4] = {-3.0, 1.0, 3.0, 0.0 };
+ static GLfloat color[4] = { 0.3, 0.7, 0.2, 1.0 };
static GLfloat fogColor[4] = {0.5, 0.5, 0.5, 1.0};
- glLightfv( GL_LIGHT0, GL_POSITION, pos );
+ glEnable( GL_DEPTH_TEST );
glEnable( GL_CULL_FACE );
+
+ /* If enabled, normal vectors specified with glNormal are scaled
+ to unit length after transformation. See glNormal. */
+ glEnable( GL_NORMALIZE );
+
+ glLightfv( GL_LIGHT0, GL_POSITION, pos );
glEnable( GL_LIGHTING );
glEnable( GL_LIGHT0 );
- glEnable( GL_DEPTH_TEST );
+
+ glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color );
+ glShadeModel( GL_FLAT ); /* glShadeModel( GL_SMOOTH ); */
glEnable( GL_FOG );
- glFogi (GL_FOG_MODE, GL_LINEAR);
+ glFogi (GL_FOG_MODE, GL_EXP);
/* glFogf (GL_FOG_START, 1.0); */
- glFogf (GL_FOG_END, 1000.0);
+ /* glFogf (GL_FOG_END, 1000.0); */
glFogfv (GL_FOG_COLOR, fogColor);
- glFogf (GL_FOG_DENSITY, 0.04);
- glHint(GL_FOG_HINT, GL_FASTEST);
-
+ glFogf (GL_FOG_DENSITY, fogDensity);
+ /* glHint (GL_FOG_HINT, GL_FASTEST); */
+
glClearColor(0.6, 0.6, 0.9, 1.0);
}
/* make terrain mesh */
mesh = make_mesh();
-
- /* If enabled, normal vectors specified with glNormal are scaled
- to unit length after transformation. See glNormal. */
- glEnable( GL_NORMALIZE );
}
}
-/* create the terrain mesh */
-GLint make_mesh_old() {
- GLint mesh;
- static GLfloat color[4] = { 0.3, 0.7, 0.2, 1.0 };
-
- mesh = glGenLists(1);
- glNewList(mesh, GL_COMPILE);
- glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color );
- glShadeModel( GL_FLAT ); /* glShadeModel( GL_SMOOTH ); */
-
- glBegin(GL_POLYGON);
- glVertex3f(-10.0, -10.0, 0.0);
- glVertex3f(0.0, -10.0, 0.0);
- glVertex3f(0.0, 0.0, 1.0);
- glVertex3f(-10.0, 0.0, 1.0);
- glEnd();
-
- glBegin(GL_POLYGON);
- glVertex3f(-10.0, 0.0, 1.0);
- glVertex3f(0.0, 0.0, 1.0);
- glVertex3f(0.0, 10.0, 0.0);
- glVertex3f(-10.0, 10.0, 0.0);
- glEnd();
-
- glBegin(GL_POLYGON);
- glVertex3f(0.0, 0.0, 0.0);
- glVertex3f(10.0, 0.0, 2.0);
- glVertex3f(10.0, 10.0, 2.0);
- glVertex3f(0.0, 10.0, 0.0);
- glEnd();
-
- glBegin(GL_POLYGON);
- glVertex3f(0.0, -10.0, -1.0);
- glVertex3f(10.0, -10.0, 0.0);
- glVertex3f(10.0, 0.0, -1.0);
- glVertex3f(0.0, 0.0, 0.0);
- glEnd();
-
- glEndList();
-
- return(mesh);
-}
-
-
/* update the view volume */
static void update_view() {
struct flight_params *f;
/* draw the scene */
static void draw_scene( void ) {
- glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
-
/* update view volume parameters */
update_view();
+ glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
+
/* Tell GL we are switching to model view parameters */
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
- /* glTranslatef(0.0, 0.0, -5.0); */
-
- glPushMatrix();
-
/* draw terrain mesh */
draw_mesh();
- glPopMatrix();
-
#ifdef GLUT
glutSwapBuffers();
#elif MESA_TK
/* initialize GLUT */
glutInit(&argc, argv);
- /* Define initial window size */
- glutInitWindowSize(640, 400);
-
/* Define Display Parameters */
glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
+ /* Define initial window size */
+ glutInitWindowSize(640, 400);
+
/* Initialize the main window */
glutCreateWindow("Terrain Demo");
#elif MESA_TK
/* Set initial position and slew parameters */
/* slew_init(-398391.3, 120070.4, 244, 3.1415); */ /* GLOBE Airport */
- slew_init(-398673.28,120625.64, 53, 4.38);
+ /* slew_init(-398673.28,120625.64, 53, 4.38); */
+ slew_init(0.0, 0.0, 53, 0.77);
#ifdef GLUT
/* call reshape() on window resizes */
/* $Log$
-/* Revision 1.1 1997/05/21 15:57:51 curt
-/* Renamed due to added GLUT support.
+/* Revision 1.2 1997/05/23 00:35:12 curt
+/* Trying to get fog to work ...
/*
+ * Revision 1.1 1997/05/21 15:57:51 curt
+ * Renamed due to added GLUT support.
+ *
* Revision 1.3 1997/05/19 18:22:42 curt
* Parameter tweaking ... starting to stub in fog support.
*