Welcome to Stratos!
#version 130uniform mat4 projection_matrix;uniform mat4 modelview_matrix;in vec2 coordenadaTextura;in vec3 a_Vertex;out vec2 coordenadaTexturaSalida;void main(void) { coordenadaTexturaSalida = coordenadaTextura; vec4 pos = modelview_matrix * vec4(a_Vertex, 1.0); gl_Position = projection_matrix * pos; }
#version 130uniform sampler2D texture0;in vec2 coordenadaTexturaSalida;out vec3 outColor;void main(void) { outColor = vec3(texture(texture0, coordenadaTexturaSalida.st));}
TargaImage textura; //clase que contiene la siguiente función y carga la textura.. if (!textura.load(FicheroToConvertText)){ std::cerr << "No se ha podido cargar la imagen de la textura"; exit(0); } GLuint firstTexture = 0; glGenTextures(1, &firstTexture); glBindTexture(GL_TEXTURE_2D, firstTexture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, textura.getWidth(), textura.getHeight(), 0, GL_RGB, GL_UNSIGNED_BYTE, textura.getImageData());
vec4 pos = modelview_matrix * vec4(coordenadaTextura.xy, 0.0, 1.0);
glActiveTexture(GL_TEXTURE0); //texture unit 0glBindTexture(GL_TEXTURE2D, firstTexture);//activa el program shaderglUniform1i(glGetUniformLocation(program, "texture0"), 0); //<-- se pasa el unit, no el firstTexture eh! que es un error muy común
//! ********************* DATOS DE LA CABEZERA DEL FICHERO DE LA TEXTURA ************** struct TargaCabezera { unsigned char idLength; unsigned char colorMapType; unsigned char imageTypeCode; unsigned char colorMapSpec[5]; unsigned short xOrigin; unsigned short yOrigin; unsigned short widht; unsigned short height; unsigned char bpp; unsigned char imageDesc; }; TargaCabezera cabezera1; caracter = getc(ficheroTextura); cabezera1.idLength = caracter; getc(ficheroTextura); caracter = getc(fichero); cabezera1.imageTypeCode = caracter; getc(ficheroTextura); fscanf(ficheroTextura, "%d", cabezera1.xOrigin); fscanf(ficheroTextura, "%d", cabezera1.yOrigin); fscanf(ficheroTextura, "%d", cabezera1.widht); fscanf(ficheroTextura, "&d", cabezera1.height); cabezera1.bpp = getc(ficheroTextura); cabezera1.imageDesc = getc(ficheroTextura);
//!esto da dimensión al arreglo imagedata tgaFile->imageData = (unsigned char*)malloc(sizeof(unsigned char)*imageSize); for (int counter = 0; counter < (imageSize / colorMode) ; counter++){ tgaFile->imageData[counter] = 1.0; } //fread(tgaFile->imageData, sizeof(unsigned char), imageSize, filePtr); Esto lee el fichero de imagen