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: