Hi, I’m a Spanish student, sorry about my poor English.
I’ve done one aplication with GLUT, but I can’t see textures in this.
My texturas.c flie contents this:
#include<GL/glut.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include"texturas.h"
/********************************************************************/
/ Lee una imagen de textura en formato tga /
/ Parametros --> char fichero : Cadena de caracteres con el nombre /
/ del fichero /
/ int num: Numero que identifica la textura /
/ Salida --> Ninguna /
/*******************************************************************/
void leeTextura ( char *fichero, int num) {
int i, j;
char r, g, b, c;
FILE *tga;
/* Apertura del fichero TGA /
if ((tga = fopen(fichero, “rb” )) == NULL)
printf ( "Error abriendo el fichero: %s
" , fichero);
else {
/ Lee los 18 primeros caracteres de la cabecera */
for (j=1; j<=18; j++)
fscanf (tga, “%c” , &c);
/* Lee la imagen */
for (j=ALTOTEXTURA-1; j>=0; j--) {
for (i=ANCHOTEXTURA-1; i>=0; i--) {
fscanf(tga, "%c%c%c" , &b, &g, &r);
texturas[num][j][i][0] = (GLubyte)r;
texturas[num][j][i][1] = (GLubyte)g;
texturas[num][j][i][2] = (GLubyte)b;
}
}
fclose(tga); /* Cierre del fichero TGA */
}
}
void cargaTextura( char *fichero, int num) {
leeTextura(fichero, num);
glBindTexture(GL_TEXTURE_2D, nombretexturas[num]);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, 3, ANCHOTEXTURA, ALTOTEXTURA, 0, GL_RGB, GL_UNSIGNED_BYTE, texturas[num]);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
}
void InicializaTexturas(void){
glGenTextures(NUMTEXTURAS, nombretexturas);
cargaTextura( “textura.tga” , 0 );
}
And my texturas.h has this content:
#ifndef TEXTURAS_H
#define TEXTURAS_H
#define ANCHOTEXTURA 256
#define ALTOTEXTURA 256
#define NUMTEXTURAS 1
GLubyte texturas[NUMTEXTURAS][ALTOTEXTURA][ANCHOTEXTURA][3];
GLuint nombretexturas[NUMTEXTURAS];
void leeTextura(char *fichero, int num);
void cargaTextura(char *fichero, int num);
void InicializaTexturas(void);
#endif
when I put a texture in an object I do this:
glEnable (GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,nombretexturas[0]);
object();
glDisable(GL_TEXTURE_2D);
I can’t see any texture. What could be the matter??
Thanks