1:#include <stdio.h>
   2:#include <GL/glut.h>
   3:#include "texturas.h"
   4:
   5:void iniciaTexturas(void) {
   6:        glGenTextures(numTexturas, nombreTexturas);
   7:    cargaTexturas();
   8:}
   9:
  10:
  11:/******************************************************************************************/
  12:/* Lee una imagen de textura en formato tga                                               */
  13:/* Parametros --> char *fichero : Cadena de caracteres con el nombre del fichero          */
  14:/*                                int num: Numero que identifica la textura                               */
  15:/* Salido --> Ninguna                                                                     */
  16:/******************************************************************************************/
  17:
  18:// cÛdigo que no funciona...
  19:
  20:void leeTextura (char *fichero, int num) {
  21:        int   i, j;
  22:        char  r, g, b, c;
  23:        FILE  *tga;
  24:
  25:        // Apertura del fichero TGA 
  26:        if ((tga = fopen(fichero, "rb")) == NULL)
  27:                printf ("Error abriendo el fichero: %s\n", fichero);
  28:        else
  29:        {
  30:                // Lee los 18 primeros caracteres de la cabecera 
  31:                for (j=1; j<=18; j++)
  32:                        fscanf (tga, "%c", &c);
  33:
  34:                // Lee la imagen 
  35:                for (j=altoTextura-1; j>=0; j--)
  36:                {
  37:                        for (i=anchoTextura-1; i>=0; i--)
  38:                        {
  39:                                fscanf(tga, "%c%c%c", &b, &g, &r); 
  40:                                texturas[num][j][i][0] = (GLubyte)r;
  41:                                texturas[num][j][i][1] = (GLubyte)g;
  42:                                texturas[num][j][i][2] = (GLubyte)b;
  43:                        }
  44:                }
  45:                fclose(tga);   // Cierre del fichero TGA 
  46:        }
  47:}
  48:
  49:void cargaTextura(char *fichero, int num) {
  50:        leeTextura(fichero, num);
  51:        glBindTexture(GL_TEXTURE_2D, nombreTexturas[num]);
  52:        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
  53:        glTexImage2D(GL_TEXTURE_2D, 0, 3, anchoTextura, altoTextura, 0, GL_RGB, GL_UNSIGNED_BYTE, texturas[num]);
  54:
  55:        glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
  56:        glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
  57:        glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
  58:
  59:        
  60:        //otras opciones para las texturas
  61:        //glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); 
  62:        //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
  63:        //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
  64:        //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  65:        //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  66:
  67:}
  68:
  69:void cargaTexturas(void) {
  70:        cargaTextura("Terrain2.tga", 0);
  71:        cargaTextura("dia.tga", 1);
  72:        cargaTextura("agua.tga", 2);
  73:        cargaTextura("madera.tga", 3);
  74:        cargaTextura("friso.tga", 4);
  75:        
  76:        glEnable(GL_TEXTURE_2D);
  77:}
  78:
  79: