From 784dcd9039dd0e0e2f474d9599ab6d526fd22f28 Mon Sep 17 00:00:00 2001 From: curt Date: Wed, 21 May 1997 02:14:41 +0000 Subject: [PATCH] Renamed these files, restructured with GLUT support. --- Main/gltkkey.c | 67 ------------ Main/gltkkey.h | 36 ------- Main/gltkmain.c | 278 ------------------------------------------------ Main/mesh2ogl.c | 121 --------------------- 4 files changed, 502 deletions(-) delete mode 100644 Main/gltkkey.c delete mode 100644 Main/gltkkey.h delete mode 100644 Main/gltkmain.c delete mode 100644 Main/mesh2ogl.c diff --git a/Main/gltkkey.c b/Main/gltkkey.c deleted file mode 100644 index 2df8462b9..000000000 --- a/Main/gltkkey.c +++ /dev/null @@ -1,67 +0,0 @@ -/************************************************************************** - * tkglkey.c -- handle tkgl keyboard events - * - * Written by Curtis Olson, started May 1997. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#include - -/* assumes -I/usr/include/mesa in compile command */ -#include "gltk.h" - -#include "gltkkey.h" -#include "../aircraft/aircraft.h" - - -/* Handle keyboard events */ -GLenum key(int k, GLenum mask) { - struct control_params *c; - - c = ¤t_aircraft.controls; - - switch (k) { - case TK_UP: - c->elev -= 0.1; - return GL_TRUE; - case TK_DOWN: - c->elev += 0.1; - return GL_TRUE; - case TK_LEFT: - c->aileron += 0.01; - return GL_TRUE; - case TK_RIGHT: - c->aileron -= 0.01; - return GL_TRUE; - case 1 /* TK_END */: - c->rudder -= 0.01; - return GL_TRUE; - case 2 /* TK_PGDWN */: - c->rudder += 0.01; - return GL_TRUE; - case TK_a: - c->throttle[0] -= 0.05; - return GL_TRUE; - case TK_s: - c->throttle[0] += 0.05; - case TK_ESCAPE: - tkQuit(); - } - - printf("Key hit = %d\n", k); - - return GL_FALSE; -} - - -/* $Log$ -/* Revision 1.2 1997/05/19 18:22:41 curt -/* Parameter tweaking ... starting to stub in fog support. -/* - * Revision 1.1 1997/05/16 16:05:51 curt - * Initial revision. - * - */ diff --git a/Main/gltkkey.h b/Main/gltkkey.h deleted file mode 100644 index 51bb7ebac..000000000 --- a/Main/gltkkey.h +++ /dev/null @@ -1,36 +0,0 @@ -/************************************************************************** - * tkglkey.h -- handle tkgl keyboard events - * - * Written by Curtis Olson, started May 1997. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#ifndef TKGLKEY_H -#define TKGLKEY_H - - -#ifdef MESA - /* assumes -I/usr/include/mesa in compile command */ - #include "gltk.h" -#else - #include -#endif - -/* Handle keyboard events */ -GLenum key(int k, GLenum mask); - - -#endif TKGLKEY_H - - -/* $Log$ -/* Revision 1.2 1997/05/17 00:17:34 curt -/* Trying to stub in support for standard OpenGL. -/* - * Revision 1.1 1997/05/16 16:05:53 curt - * Initial revision. - * - */ diff --git a/Main/gltkmain.c b/Main/gltkmain.c deleted file mode 100644 index 49088f21c..000000000 --- a/Main/gltkmain.c +++ /dev/null @@ -1,278 +0,0 @@ -/************************************************************************** - * gltkmain.c -- top level sim routines - * - * Written by Curtis Olson for Mesa (OpenGL), started May 1997. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -#include -#include -#include -#include - -#ifdef MESA - /* assumes -I/usr/include/mesa in compile command */ - #include "gltk.h" -#else - #include -/* #include "aux.h" */ -#endif - -#include "gltkkey.h" -#include "../aircraft/aircraft.h" -#include "../scenery/scenery.h" - - -/* This a record containing all the info for the aircraft currently - being operated */ -struct aircraft_params current_aircraft; - -/* temporary hack */ -extern struct mesh *mesh_ptr; - -/* Function prototypes */ -GLint make_mesh(); -static void draw_mesh(); - - -/* view parameters */ -static GLfloat win_ratio = 1.0; - -/* pointer to terrain mesh structure */ -static GLint mesh; - -/* 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 fogColor[4] = {0.5, 0.5, 0.5, 1.0}; - static GLfloat local_view[] = { 0.0 }; - - glLightfv( GL_LIGHT0, GL_POSITION, pos ); - glEnable( GL_CULL_FACE ); - glEnable( GL_LIGHTING ); - glEnable( GL_LIGHT0 ); -/**/glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view); - glEnable( GL_DEPTH_TEST ); -/**/glDepthFunc(GL_LEQUAL); - -/* glEnable( GL_FOG ); - glFogi (GL_FOG_MODE, GL_LINEAR); - glFogf (GL_FOG_START, 1.0); - glFogf (GL_FOG_END, 100.0); - glFogfv (GL_FOG_COLOR, fogColor); - glFogf (GL_FOG_DENSITY, 0.35); - glHint (GL_FOG_HINT, GL_DONT_CARE); - */ - - glClearColor(0.6, 0.6, 0.9, 1.0); -} - - -/* init_scene() -- build all objects */ -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 ); -} - - -/* create the terrain mesh */ -GLint make_mesh() { - GLint mesh; - - mesh = mesh_to_ogl(mesh_ptr); - - return(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; - - f = ¤t_aircraft.flight; - - /* Tell GL we are about to modify the projection parameters */ - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - gluPerspective(45.0, 1.0/win_ratio, 1.0, 6000.0); - gluLookAt(f->pos_x, f->pos_y, f->pos_z, - f->pos_x + cos(f->Psi), f->pos_y + sin(f->Psi), f->pos_z, - 0.0, 0.0, 1.0); -} - - -/* draw the scene */ -static void draw_scene( void ) { - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - /* update view volume parameters */ - update_view(); - - /* 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(); - - tkSwapBuffers(); -} - - -/* draw the terrain mesh */ -static void draw_mesh() { - glCallList(mesh); -} - - -/* What should we do when we have nothing else to do? How about get - * ready for the next move?*/ -static void idle( void ) -{ - slew_update(); - aircraft_debug(1); - - draw_scene(); -} - - -/* new window size or exposure */ -static void reshape( int width, int height ) { - /* Do this so we can call reshape(0,0) ourselves without having to know - * what the values of width & height are. */ - if ( (height > 0) && (width > 0) ) { - win_ratio = (GLfloat) height / (GLfloat) width; - } - - /* Inform gl of our view window size */ - glViewport(0, 0, (GLint)width, (GLint)height); - - update_view(); - - glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); -} - - -/************************************************************************** - * Main ... - **************************************************************************/ - -int main( int argc, char *argv[] ) { - - /* parse the scenery file */ - parse_scenery(argv[1]); - - /* Define initial window size */ - tkInitPosition(0, 0, 640, 400); - - /* Define Display Parameters */ - tkInitDisplayMode( TK_RGB | TK_DEPTH | TK_DOUBLE | TK_DIRECT ); - - /* Initialize the main window */ - if (tkInitWindow("Terrain Demo") == GL_FALSE) { - tkQuit(); - } - - /* setup view parameters */ - init_view(); - - /* build all objects */ - init_scene(); - - /* 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); - - /* call reshape() on expose events */ - tkExposeFunc( reshape ); - - /* call reshape() on window resizes */ - tkReshapeFunc( reshape ); - - /* call key() on keyboard event */ - tkKeyDownFunc( key ); - - /* call idle() whenever there is nothing else to do */ - tkIdleFunc( idle ); - - /* draw the scene */ - tkDisplayFunc( draw_scene ); - - /* pass control off to the tk event handler */ - tkExec(); - - return(0); -} - - -/* $Log$ -/* Revision 1.3 1997/05/19 18:22:42 curt -/* Parameter tweaking ... starting to stub in fog support. -/* - * Revision 1.2 1997/05/17 00:17:34 curt - * Trying to stub in support for standard OpenGL. - * - * Revision 1.1 1997/05/16 16:05:52 curt - * Initial revision. - * - */ diff --git a/Main/mesh2ogl.c b/Main/mesh2ogl.c deleted file mode 100644 index 9e0453da9..000000000 --- a/Main/mesh2ogl.c +++ /dev/null @@ -1,121 +0,0 @@ -/************************************************************************** - * mesh2ogl.c -- walk through a mesh data structure and make ogl calls - * - * Written by Curtis Olson, started May 1997. - * - * $Id$ - * (Log is kept at end of this file) - **************************************************************************/ - - -/* assumes -I/usr/include/mesa in compile command */ -#include "gltk.h" - -#include "../scenery/mesh.h" -#include "mat3.h" - - -/* Sets the first vector to be the cross-product of the last two - vectors. */ -static void mat3_cross_product(float result_vec[3], register float vec1[3], - register float vec2[3]) { - float tempvec[3]; - register float *temp = tempvec; - - temp[0] = vec1[1] * vec2[2] - vec1[2] * vec2[1]; - temp[1] = vec1[2] * vec2[0] - vec1[0] * vec2[2]; - temp[2] = vec1[0] * vec2[1] - vec1[1] * vec2[0]; - - MAT3_COPY_VEC(result_vec, temp); -} - - -/* walk through mesh and make ogl calls */ -GLint mesh_to_ogl(struct mesh *m) { - GLint mesh; - static GLfloat color[4] = { 0.3, 0.7, 0.2, 1.0 }; - - float x1, y1, x2, y2, z11, z12, z21, z22; - float v1[3], v2[3], normal[3]; - int i, j, istep, jstep, iend, jend; - float temp; - - istep = jstep = 4; /* Detail level 1 -- 1200 ... */ - - mesh = glGenLists(1); - glNewList(mesh, GL_COMPILE); - glMaterialfv( GL_FRONT, GL_AMBIENT_AND_DIFFUSE, color ); - glShadeModel( GL_FLAT ); /* glShadeModel( GL_SMOOTH ); */ - - iend = m->cols - 1; - jend = m->rows - 1; - - y1 = m->originy; - y2 = y1 + (m->col_step * istep); - - for ( i = 0; i < iend; i += istep ) { - x1 = m->originx; - x2 = x1 + (m->row_step * jstep); - for ( j = 0; j < jend; j += jstep ) { - z11 = 0.03 * m->mesh_data[j * m->rows + i ]; - z12 = 0.03 * m->mesh_data[j * m->rows + (i+istep)]; - z21 = 0.03 * m->mesh_data[(j+jstep) * m->rows + i ]; - z22 = 0.03 * m->mesh_data[(j+jstep) * m->rows + (i+istep)]; - - /* printf("x1 = %f y1 = %f\n", x1, y1); - printf("x2 = %f y2 = %f\n", x2, y2); - printf("z11 = %f z12 = %f z21 = %f z22 = %f\n", - z11, z12, z21, z22); */ - - v1[0] = x2 - x1; v1[1] = 0; v1[2] = z21 - z11; - v2[0] = x2 - x1; v2[1] = y2 - y1; v2[2] = z22 - z11; - mat3_cross_product(normal, v1, v2); - MAT3_NORMALIZE_VEC(normal,temp); - glNormal3fv(normal); - glBegin(GL_POLYGON); - glVertex3f(x1, y1, z11); - glVertex3f(x2, y1, z21); - glVertex3f(x2, y2, z22); - /* printf("(%f, %f, %f)\n", x1, y1, z11); - printf("(%f, %f, %f)\n", x2, y1, z21); - printf("(%f, %f, %f)\n", x2, y2, z22); */ - glEnd(); - - v1[0] = x2 - x1; v1[1] = y2 - y1; v1[2] = z22 - z11; - v2[0] = 0; v2[1] = y2 - y1; v2[2] = z12 - z11; - mat3_cross_product(normal, v1, v2); - MAT3_NORMALIZE_VEC(normal,temp); - glNormal3fv(normal); - glBegin(GL_POLYGON); - glVertex3f(x1, y1, z11); - glVertex3f(x2, y2, z22); - glVertex3f(x1, y2, z12); - /* printf("(%f, %f, %f)\n", x1, y1, z11); - printf("(%f, %f, %f)\n", x2, y2, z22); - printf("(%f, %f, %f)\n", x1, y2, z12); */ - glEnd(); - - x1 = x2; - x2 = x1 + (m->row_step * jstep); - } - y1 = y2; - y2 = y1 + (m->col_step * istep); - } - - glEndList(); - - return(mesh); -} - - -/* $Log$ -/* Revision 1.3 1997/05/19 18:22:42 curt -/* Parameter tweaking ... starting to stub in fog support. -/* - * Revision 1.2 1997/05/17 00:17:35 curt - * Trying to stub in support for standard OpenGL. - * - * Revision 1.1 1997/05/16 16:05:52 curt - * Initial revision. - * - */