From ab9ff1c38e9db0c151ee6cea5000b78f834ba90d Mon Sep 17 00:00:00 2001 From: "John M. Penn" Date: Fri, 30 Sep 2016 11:33:07 -0500 Subject: [PATCH] Deleted old unmaintained graphics code --- .../Cannon/models/cannon/graphics/cannon.c | 487 ------------------ .../Cannon/models/cannon/graphics/glX_stubs.c | 5 - .../models/cannon/graphics/images/MarsMap.bmp | Bin 86454 -> 0 bytes .../models/cannon/graphics/images/dirt.bmp | Bin 30054 -> 0 bytes .../models/cannon/graphics/images/granite.bmp | Bin 27702 -> 0 bytes .../Cannon/models/cannon/graphics/makefile | 25 - .../Cannon/models/cannon/graphics/texture.c | 176 ------- .../Cannon/models/cannon/graphics/texture.h | 59 --- 8 files changed, 752 deletions(-) delete mode 100644 trick_sims/Cannon/models/cannon/graphics/cannon.c delete mode 100644 trick_sims/Cannon/models/cannon/graphics/glX_stubs.c delete mode 100644 trick_sims/Cannon/models/cannon/graphics/images/MarsMap.bmp delete mode 100644 trick_sims/Cannon/models/cannon/graphics/images/dirt.bmp delete mode 100644 trick_sims/Cannon/models/cannon/graphics/images/granite.bmp delete mode 100644 trick_sims/Cannon/models/cannon/graphics/makefile delete mode 100644 trick_sims/Cannon/models/cannon/graphics/texture.c delete mode 100644 trick_sims/Cannon/models/cannon/graphics/texture.h diff --git a/trick_sims/Cannon/models/cannon/graphics/cannon.c b/trick_sims/Cannon/models/cannon/graphics/cannon.c deleted file mode 100644 index 5b84010d..00000000 --- a/trick_sims/Cannon/models/cannon/graphics/cannon.c +++ /dev/null @@ -1,487 +0,0 @@ -/* - * The reflection code was in part taken from: - * http://nehe.gamedev.net : Lesson 26 - * Other stuff I gathered from the OpenGL Programming Guide - * (a.k.a. the red book) - * - * Image textures were made with gimp - * - * Tested on Redhat 9.0 with Nvidia card - */ - -#if ( __APPLE__ ) -# include -#else -# include -#endif - -#include -#include -#include - -#include -#include "texture.h" - -#include "trick_utils/comm/include/tc.h" - -void draw_dirt(); -void draw_cannon() ; -void draw_ball() ; -void draw_wheel() ; -void draw_barrel_leg() ; -void move_ball(); - -GLUquadricObj *q_ball; - -typedef struct { - double x ; - double y ; - double z ; -} Point ; - -static GLuint texture_dirt ; -static GLuint texture_mars ; -static GLuint texture_granite ; -static GLfloat light_position[3] ; -static GLfloat camera[3] = { 5.0, 10, 4.0 } ; - -GLfloat mat_ambient[4] = { 0.25, 0.25, 0.25, 1.0 }; -GLfloat mat_diffuse[4] = { 0.4, 0.4, 0.4, 1.0 }; -//GLfloat mat_specular[4] = {0.774597, 0.774597, 0.774597,1.0 }; -GLfloat mat_specular[4] = {0.0, 0.0, 0.0, 1.0 }; -GLfloat light_ambient[] = { 1.0, 1.0, 1.0, 1.0 }; -GLfloat face_shininess[] = { 76.8 }; -GLfloat fog_color[4] = { 0.0, 0.0, 0.0, 0.0 } ; - -TCDevice listen_device ; -TCDevice connection ; -Point ball_position ; - -int ball_spin_angle = 0; - -void display(void) -{ - static float angle = 0.0 ; - - glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); - - glLoadIdentity(); - - gluLookAt (camera[0], camera[1], camera[2], - (GLdouble) ball_position.x, 0.0, - (GLdouble) ball_position.y, - 0.0, 0.0, 1.0); - - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - - glColorMask(1,1,1,1); - glEnable(GL_LIGHTING); - glEnable(GL_BLEND); - - draw_dirt(); - - glPushMatrix(); - glTranslatef ( 2.0 , 0.0 , 0 ); - draw_cannon(); - glPopMatrix(); - - glPushMatrix(); - glTranslatef ( ball_position.x , 0.0 , ball_position.y ); - if ( ball_position.y > 1.0 ) { - angle++; - glRotatef (angle, 0.0f, 0.0f, 1.0f); - } - draw_ball() ; - glPopMatrix(); - - glutSwapBuffers(); -} - -void draw_ball() { - - gluQuadricNormals(q_ball, GL_SMOOTH); - gluQuadricTexture(q_ball, GL_TRUE); - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, texture_mars); - glEnable(GL_TEXTURE_2D); - gluSphere(q_ball, 0.5, 30, 30); - glDisable(GL_TEXTURE_2D); -} - -void draw_cannon() { - - - GLUquadricObj *quadric; - quadric = gluNewQuadric(); - - gluQuadricDrawStyle(quadric, GLU_FILL); - gluQuadricTexture(quadric, GL_TRUE); - - /* Wheel 1 */ - glPushMatrix(); - glTranslatef ( 0.0 , 1.0 , 0.0 ); - draw_wheel() ; - glPopMatrix(); - - /* Wheel 2 */ - glPushMatrix(); - glTranslatef ( 0.0 , -1.0 , 0.0 ); - draw_wheel() ; - glPopMatrix(); - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, texture_granite); - - /* Barrel sits on this thing */ - glPushMatrix(); - glRotatef (90, 1.0, 0.0, 0.0); - glTranslatef ( -3.0 , 0.0 , -0.6 ); - draw_barrel_leg() ; - glPopMatrix(); - - glPushMatrix(); - glRotatef (90, 1.0, 0.0, 0.0); - glTranslatef ( -3.0 , 0.0 , 0.6 ); - draw_barrel_leg() ; - glPopMatrix(); - - /* Axle */ - glPushMatrix(); - glRotatef (90, 1.0, 0.0, 0.0); - glTranslatef ( 0.0 , 1.0 , 0.0 ); - glTranslatef ( 0.0 , 0.0 , -1.0 ); - gluCylinder(quadric, 0.25, 0.25, 2.00, 30, 30); - glPopMatrix(); - - /* Barrel */ - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, texture_granite); - glPushMatrix(); - glTranslatef ( -2.0 , 0.0 , 0.0 ); - glTranslatef ( 0.0 , 0.0 , 1.0 ); - glRotatef ((GLfloat) 60.0, 0.0, 1.0, 0.0); - gluCylinder(quadric, 0.5, 0.5, 3.00, 30, 30); - gluSphere(quadric, 0.52 , 30, 30); - glPopMatrix(); - glDisable(GL_TEXTURE_2D); - - gluDeleteQuadric(quadric); -} - -void draw_barrel_leg() { - - GLUquadricObj *quadric; - quadric = gluNewQuadric(); - - GLfloat a[3] = { 0.0, 0.0, 0.0 } ; - GLfloat b[3] = { 0.0, 0.5, 0.0 } ; - GLfloat c[3] = { 4.0, 1.75, 0.0 } ; - GLfloat d[3] = { 4.0, 1.0, 0.0 } ; - GLfloat e[3] = { 1.0, 0.0, 0.0 } ; - - GLfloat a1[3] = { 0.0, 0.0, 0.2 } ; - GLfloat b1[3] = { 0.0, 0.5, 0.2 } ; - GLfloat c1[3] = { 4.0, 1.75, 0.2 } ; - GLfloat d1[3] = { 4.0, 1.0, 0.2 } ; - GLfloat e1[3] = { 1.0, 0.0, 0.2 } ; - - GLfloat n0[3] = { 0.0, 0.0, -1.0 } ; - GLfloat n1[3] = { 0.0, 0.0, 1.0 } ; - GLfloat n2[3] = { 0.0, -1.0, 0.0 } ; - GLfloat n3[3] = { 0.0, 1.0, 0.0 } ; - GLfloat n4[3] = { 1.0, 0.0, 0.0 } ; - GLfloat n5[3] = { 0.0, -1.0, 0.0 } ; - GLfloat n6[3] = { 0.0, -1.0, 1.0 } ; - - - glBegin(GL_POLYGON) ; - glNormal3fv( n0 ) ; - glTexCoord2f(0.0, 0.0); - glTexCoord2f(0.0, 10.0); - glTexCoord2f(10.0, 10.0); - glTexCoord2f(10.0, 0.0); - glVertex3fv( a ) ; - glVertex3fv( b ) ; - glVertex3fv( c ) ; - glVertex3fv( d ) ; - glVertex3fv( e ) ; - glEnd(); - - glBegin(GL_POLYGON) ; - glNormal3fv( n1 ) ; - glVertex3fv( a1 ) ; - glVertex3fv( b1 ) ; - glVertex3fv( c1 ) ; - glVertex3fv( d1 ) ; - glVertex3fv( e1 ) ; - glEnd(); - - glBegin(GL_POLYGON) ; - glNormal3fv( n2 ) ; - glVertex3fv( a ) ; - glVertex3fv( b ) ; - glVertex3fv( b1 ) ; - glVertex3fv( a1 ) ; - glEnd(); - - glBegin(GL_POLYGON) ; - glNormal3fv( n3 ) ; - glVertex3fv( d ) ; - glVertex3fv( c ) ; - glVertex3fv( c1 ) ; - glVertex3fv( d1 ) ; - glEnd(); - - glBegin(GL_POLYGON) ; - glNormal3fv( n4 ) ; - glVertex3fv( b ) ; - glVertex3fv( b1 ) ; - glVertex3fv( c1 ) ; - glVertex3fv( c ) ; - glEnd(); - - glBegin(GL_POLYGON) ; - glNormal3fv( n5 ) ; - glVertex3fv( e ) ; - glVertex3fv( a ) ; - glVertex3fv( a1 ) ; - glVertex3fv( e1 ) ; - glEnd(); - - glBegin(GL_POLYGON) ; - glNormal3fv( n6 ) ; - glVertex3fv( d ) ; - glVertex3fv( e ) ; - glVertex3fv( e1 ) ; - glVertex3fv( d1 ) ; - glEnd(); - -} - -void draw_wheel() { - - int ii ; - int angle ; - - GLUquadricObj *quadric; - - quadric = gluNewQuadric(); - gluQuadricDrawStyle(quadric, GLU_FILL); - gluQuadricTexture(quadric, GL_TRUE); - - /* Spokes */ - angle = 0 ; - for ( ii = 0 ; ii < 14 ; ii++ ) { - - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, texture_granite); - glPushMatrix(); - glTranslatef ( 0.0 , 0.0 , 1.0 ); - glRotatef ((GLfloat) angle, 0.0, 1.0, 0.0); - gluCylinder(quadric, 0.05, 0.05, 1.0, 10, 10); - glPopMatrix(); - glDisable(GL_TEXTURE_2D); - - angle += 25 ; - } - - /* - * Tire and cap - */ - glEnable(GL_TEXTURE_2D); - glBindTexture(GL_TEXTURE_2D, texture_granite); - - glPushMatrix(); - glTranslatef ( 0.0 , 0.0 , 1.0 ); - glRotatef ((GLfloat) 90, 0.0, 1.0, 0.0); - glRotatef ((GLfloat) 90, 1.0, 0.0, 0.0); - - glTranslatef ( 0.0 , 0.0 , 0.1 ); - gluDisk(quadric, 1.0, 1.05, 30, 30); /* Tire side */ - gluDisk(quadric, 0.00, 0.25, 30, 30); /* Cap side */ - - glTranslatef ( 0.0 , 0.0 , -0.2 ); - gluDisk(quadric, 1.0, 1.05, 30, 30); /* Tire side */ - gluDisk(quadric, 0.00, 0.25, 30, 30); /* Cap side */ - - gluCylinder(quadric, 1.0, 1.0, 0.2, 30, 30); /* Inner Tire */ - gluCylinder(quadric, 1.05, 1.05, 0.2, 30, 30); /* Tire tread */ - gluCylinder(quadric, 0.25, 0.25, 0.2, 30, 30); /* Cap */ - - glPopMatrix(); - glDisable(GL_TEXTURE_2D); - - gluDeleteQuadric(quadric); - -} -void draw_dirt() { - - glPolygonMode(GL_FRONT, GL_FILL ); - glEnable(GL_POLYGON_SMOOTH); - glEnable(GL_TEXTURE_2D); - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glBindTexture(GL_TEXTURE_2D, texture_dirt); - glBegin(GL_POLYGON); - glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient); - glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse); - glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular); - glMaterialfv(GL_FRONT, GL_SHININESS, face_shininess); - glNormal3f( 0.0, 0.0, 1.0 ) ; - glTexCoord2f(0.0, 0.0) ; glVertex3f( -500.0, 500.0, -0.5 ) ; - glTexCoord2f(250.0, 0.0) ; glVertex3f( 500.0, 500.0, -0.5 ) ; - glTexCoord2f(250.0, 250.0) ; glVertex3f( 500.0, -500.0, -0.5 ) ; - glTexCoord2f(0.0, 250.0) ; glVertex3f( -500.0, -500.0, -0.5 ) ; - glEnd(); - glDisable(GL_TEXTURE_2D); -} - -void reshape (int w, int h) -{ - glViewport (0, 0, (GLsizei) w, (GLsizei) h); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 500.0); - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - gluLookAt (camera[0], camera[1], camera[2], 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); -} - -void move_ball() { - int nbytes ; - - if ( tc_isValid(&connection) && tc_pending(&connection) ) { - - nbytes = tc_read(&connection, (char*) &ball_position.x, - sizeof(double)); - nbytes = tc_read(&connection, (char*) &ball_position.y, - sizeof(double)); - } - - glutPostRedisplay(); -} - -void glInit() { - - /* Init glut */ - glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); - glutInitWindowSize (500, 500); - glutInitWindowPosition (100, 100); - glutCreateWindow ("Trick Cannon"); - - /* Textures */ - texture_dirt = LoadBitmap("images/dirt.bmp"); - texture_mars = LoadBitmap("images/MarsMap.bmp"); - texture_granite = LoadBitmap("images/granite.bmp"); - - /* Quadric for ball */ - q_ball = gluNewQuadric(); - - //glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); - glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); - - // Here is the light/shading init - light_position[0] = 4.0 ; - light_position[1] = 0.0 ; - light_position[2] = 0.0 ; - light_position[3] = 1.0 ; - GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 }; - - glClearColor (0.0, 0.0, 0.0, 1.0); - glShadeModel (GL_SMOOTH); - - glLightfv(GL_LIGHT0, GL_POSITION, light_position); - glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); - - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_DEPTH_TEST); - - glDepthFunc(GL_LEQUAL); - glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - - // Fog - glEnable(GL_FOG); - glFogi(GL_FOG_MODE, GL_EXP2) ; - glFogfv(GL_FOG_COLOR, fog_color); - glFogf(GL_FOG_DENSITY, 0.005) ; - glFogf(GL_FOG_START, 10.0); - glFogf(GL_FOG_END, 10.0); - - // Add specular effect -after- texturing calculations - glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL, - GL_SEPARATE_SPECULAR_COLOR); - - /* Call backs */ - glutDisplayFunc(display); - glutReshapeFunc(reshape); -} - -void keyboard(unsigned char key, int x, int y) { - - switch (key) { - case 'u': - camera[0] -= 0.5 ; - break; - case 'i': - camera[0] += 0.5 ; - break; - case 'j': - camera[1] -= 0.5 ; - break; - case 'k': - camera[1] += 0.5 ; - break; - case 'n': - camera[2] -= 0.5 ; - break; - case 'm': - camera[2] += 0.5 ; - break; - case 'x': - light_position[0] -= 0.5 ; - break; - case 'y': - light_position[1] -= 0.5 ; - break; - case 'z': - light_position[2] -= 0.5 ; - break; - case 'X': - light_position[0] += 0.5 ; - break; - case 'Y': - light_position[1] += 0.5 ; - break; - case 'Z': - light_position[2] += 0.5 ; - break; - } -} - -void trickCommInit( ) { - - memset(&listen_device, '\0', sizeof(TCDevice)); - memset(&connection, '\0', sizeof(TCDevice)); - - listen_device.port = 9000 ; - connection.blockio_type = TC_COMM_NOBLOCKIO ; - tc_init(&listen_device) ; - tc_accept(&listen_device, &connection); -} - - -int main(int argc, char** argv) -{ - glutInit(&argc, argv); - glInit(); - trickCommInit(); - glutIdleFunc(move_ball); - glutKeyboardFunc(keyboard); - glutMainLoop(); - return 0; -} diff --git a/trick_sims/Cannon/models/cannon/graphics/glX_stubs.c b/trick_sims/Cannon/models/cannon/graphics/glX_stubs.c deleted file mode 100644 index 6528f85f..00000000 --- a/trick_sims/Cannon/models/cannon/graphics/glX_stubs.c +++ /dev/null @@ -1,5 +0,0 @@ -void glXBindChannelToWindowSGIX() {} -void glXQueryChannelDeltasSGIX() {} -void glXChannelRectSyncSGIX() {} -void glXChannelRectSGIX() {} -void glXQueryChannelRectSGIX() {} diff --git a/trick_sims/Cannon/models/cannon/graphics/images/MarsMap.bmp b/trick_sims/Cannon/models/cannon/graphics/images/MarsMap.bmp deleted file mode 100644 index 45d0341993257006ff8b9aa6a11b5099d809268a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86454 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 diff --git a/trick_sims/Cannon/models/cannon/graphics/images/dirt.bmp b/trick_sims/Cannon/models/cannon/graphics/images/dirt.bmp deleted file mode 100644 index 8a1206f7b1c416004ad2157250e73004db9fe7de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30054 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 - * - * ALL RIGHTS RESERVED - * - * - * Tutorial 3: 3d engine - Texture mapping with OpenGL! - * - * Include File: texture.cpp - * - */ - -/* -Linux port by Panteleakis Ioannis -mail: pioann@csd.auth.gr - -just run: make and you are done. -of course you may need to change the makefile -*/ - - -#include -#include -#include -#if ( __APPLE__ ) -# include -# include -#else -# include -# include -#endif -#include "texture.h" - -#include "trick_utils/comm/include/trick_byteswap.h" - -/********************************************************** - * - * VARIABLES DECLARATION - * - *********************************************************/ - -/*** Counter to keep track of the last loaded texture ***/ -int num_texture=-1; - - - -/********************************************************** - * - * FUNCTION LoadBitmap(char *) - * - * This function loads a bitmap file and return the OpenGL - * reference ID to use that texture - * - *********************************************************/ -int LoadBitmap(char *filename) -{ - FILE * file; - char temp; - long i; - - int local_order; - TRICK_GET_BYTE_ORDER(local_order); - - BITMAPINFOHEADER infoheader; - - num_texture++; // The counter of the current texture is increased - - // Open the file for reading - if( (file = fopen(filename, "rb"))==NULL) return (-1); - - fseek(file, 18, SEEK_CUR); /* start reading width & height */ - fread(&infoheader.biWidth, sizeof(int), 1, file); - if ( local_order == TRICK_BIG_ENDIAN ) { - infoheader.biWidth = trick_byteswap_int(infoheader.biWidth); - } - - fread(&infoheader.biHeight, sizeof(int), 1, file); - if ( local_order == TRICK_BIG_ENDIAN ) { - infoheader.biHeight = trick_byteswap_int(infoheader.biHeight); - } - - fread(&infoheader.biPlanes, sizeof(short int), 1, file); - if ( local_order == TRICK_BIG_ENDIAN ) { - infoheader.biPlanes = trick_byteswap_short(infoheader.biPlanes); - } - if (infoheader.biPlanes != 1) { - printf("Planes from %s is not 1: %u\n", - filename, infoheader.biPlanes); - return 0; - } - - // read the bpp - fread(&infoheader.biBitCount, sizeof(unsigned short int), 1, file); - if ( local_order == TRICK_BIG_ENDIAN ) { - infoheader.biBitCount = trick_byteswap_short(infoheader.biBitCount); - } - if (infoheader.biBitCount != 24) { - printf("Bpp from %s is not 24: %d\n", filename, infoheader.biBitCount); - return 0; - } - - fseek(file, 24, SEEK_CUR); - - // read the data. - infoheader.data = (char *) malloc(infoheader.biWidth * - infoheader.biHeight * 3); - if (infoheader.data == NULL) { - printf("Error allocating memory for color-corrected image data\n"); - return 0; - } - - if ((i = fread(infoheader.data, infoheader.biWidth * - infoheader.biHeight * 3, 1, file)) != 1) { - printf("Error reading image data from %s.\n", filename); - return 0; - } - - for (i=0; i<(infoheader.biWidth * infoheader.biHeight * 3); i+=3) { - // reverse all of the colors. (bgr -> rgb) - temp = infoheader.data[i]; - infoheader.data[i] = infoheader.data[i+2]; - infoheader.data[i+2] = temp; - } - - - fclose(file); // Closes the file stream - - // Bind the ID texture specified by the 2nd parameter - glBindTexture(GL_TEXTURE_2D, num_texture); - - // The next commands sets the texture parameters - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); - //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - - // If the u,v coordinates overflow the range 0,1 the image is repeated - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); - //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); - - // The magnification function ("linear" produces better results) - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, - GL_LINEAR_MIPMAP_NEAREST); - - //The minifying function - glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, - GL_LINEAR_MIPMAP_NEAREST); - - // We don't combine the color with the original surface color, - // use only the texture map. - glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - - // Finally we define the 2d texture - glTexImage2D( GL_TEXTURE_2D, 0, 3, - infoheader.biWidth, infoheader.biHeight, - 0, GL_RGB, GL_UNSIGNED_BYTE, infoheader.data); - - // And create 2d mipmaps for the minifying function - gluBuild2DMipmaps( GL_TEXTURE_2D, 3, - infoheader.biWidth, infoheader.biHeight, - GL_RGB, GL_UNSIGNED_BYTE, infoheader.data); - - free(infoheader.data); - - return (num_texture); -} diff --git a/trick_sims/Cannon/models/cannon/graphics/texture.h b/trick_sims/Cannon/models/cannon/graphics/texture.h deleted file mode 100644 index f3352c34..00000000 --- a/trick_sims/Cannon/models/cannon/graphics/texture.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * ---------------- www.spacesimulator.net -------------- - * ---- Space simulators and 3d engine tutorials ---- - * - * (c) Copyright 2002 Damiano Vitulli - * - * ALL RIGHTS RESERVED - * - * - * Tutorial 3: 3d engine - Texture mapping with OpenGL! - * - * File header: texture.h - * - */ - -/* -Linux port by Panteleakis Ioannis -mail: pioann@csd.auth.gr - -just run: make and you are done. -of course you may need to change the makefile -*/ - - -/********************************************************** - * - * VARIABLES DECLARATION - * - *********************************************************/ - -/*** Counter to keep track of the last loaded texture ***/ -extern int num_texture; - - -/********************************************************** - * - * FUNCTION LoadBitmap(char *) - * - * This function loads a bitmap file and return the OpenGL reference ID to use that texture - * - *********************************************************/ - -extern int LoadBitmap(char *filename); - -typedef struct /**** BMP file info structure ****/ - { - unsigned int biSize; /* Size of info header */ - int biWidth; /* Width of image */ - int biHeight; /* Height of image */ - unsigned short biPlanes; /* Number of color planes */ - unsigned short biBitCount; /* Number of bits per pixel */ - unsigned int biCompression; /* Type of compression to use */ - unsigned int biSizeImage; /* Size of image data */ - int biXPelsPerMeter; /* X pixels per meter */ - int biYPelsPerMeter; /* Y pixels per meter */ - unsigned int biClrUsed; /* Number of colors used */ - unsigned int biClrImportant; /* Number of important colors */ - char *data; - } BITMAPINFOHEADER;