]> git.mxchange.org Git - flightgear.git/blobdiff - Main/GLmain.c
Trying to get fog to work ...
[flightgear.git] / Main / GLmain.c
index 48c085c774b0cd71380cd23ed17dc45e9704dd6a..e571100952921d97230d350f874d61994f4fa8d3 100644 (file)
@@ -44,26 +44,37 @@ static GLfloat win_ratio = 1.0;
 /* 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);
 }
 
@@ -73,10 +84,6 @@ static void init_scene() {
 
     /* 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 );
 }
 
 
@@ -90,50 +97,6 @@ GLint make_mesh() {
 }
 
 
-/* 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;
@@ -153,24 +116,18 @@ static void update_view() {
 
 /* 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
@@ -225,12 +182,12 @@ int main( int argc, char *argv[] ) {
       /* 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
@@ -254,7 +211,8 @@ int main( int argc, char *argv[] ) {
 
     /* 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 */
@@ -297,9 +255,12 @@ int main( int argc, char *argv[] ) {
 
 
 /* $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.
  *