Les textures en OpenGL

Signaler
Messages postés
55
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
17 août 2006
-
Messages postés
55
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
17 août 2006
-
Bonjour je vien de commencer en OpenGl et après beaucoup de travail j'ai réusie a faire apparaitre un Mesh avec une texture de gazon. Mais maintenant j'ai voulu changer ma texture pour une autre. Pourtant les 2 textures sont en BMP. Mais une dès que je veus la "loader" dans 3D Studio Max il me dit que c'est une type non-compatile. Et quand je "load" la texture dans le code C++ ca donne un résultat comme la photo plus bas. Pourtant j'ai tout asseyer (changer les dimantions (128, 512, 256, meme 1024), changer le nombre de bit). La photo qui a c'est qunad la texture est en BMP 16 bit. Peu important la grandeur ca me donne le même résultat.

Voila la photo :

Si quelqu'un a déjà eux le même problème j'aimerais savoir commetn l'arrenger Merci !!

PS : J'utilise UV Mapping dans 3Ds pour même les textures comme du monde.

4 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Mais ta texture, c'est quoi ses dimensions ? quand tu changeais 128, 256, tu changeais aussi le fichier image ?

Sinon on voit pas la photo.
Messages postés
55
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
17 août 2006

Bon je pensais k'il uploadait la photo sur le site. Jle placer ailleur et ca va etre corrrecte la. Mais mon problème c'est pas les dimentions parce que peu importe les dimentions sa fait toujour comme la photo quand j'enrégistre le BMP à 16 bits.

Voila la photo:
PS: Si la photo marche pas c'est que mon ordi est fermé.

Au prie d'ite moi qunad vous faire une texture BMP quelle est la dimention que vous choisisé et cb de bits ou bien quelle type de fichier.
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
On a pas le choix pour la taille d'une texture, c'est une puissance de 2 forcément.

Qd tu déclares la texture, tu spécifies un format correct ? Tu utilises quoi ? genre GL_UNSIGNED_INT en 32 bits, et toi en 16 ?
Messages postés
55
Date d'inscription
dimanche 22 février 2004
Statut
Membre
Dernière intervention
17 août 2006

Bon j'utilise pas cette fonction. Je ne la connait pas non plus :S. Mais voici le code que j'utilise pour loader des BMP:

#include <stdio.h>
#include <windows.h>
#include <GL/glut.h>
#include "LoadBMP.h"


int num_texture=-1;


int LoadBitmap(char *filename)
{
int i, j=0;
FILE *l_file;
unsigned char *l_texture;


BITMAPFILEHEADER fileheader;
BITMAPINFOHEADER infoheader;
RGBTRIPLE rgb;


num_texture++;


if( (l_file = fopen(filename, "rb"))==NULL) return (-1);

fread(&fileheader, sizeof(fileheader), 1, l_file);

fseek(l_file, sizeof(fileheader), SEEK_SET);
fread(&infoheader, sizeof(infoheader), 1, l_file);


l_texture = (byte *) malloc(infoheader.biWidth * infoheader.biHeight * 4);
memset(l_texture, 0, infoheader.biWidth * infoheader.biHeight * 4);

for (i=0; i < infoheader.biWidth*infoheader.biHeight; i++)
{
fread(&rgb, sizeof(rgb), 1, l_file);


l_texture[j+0] = rgb.rgbtRed;
l_texture[j+1] = rgb.rgbtGreen;
l_texture[j+2] = rgb.rgbtBlue;
l_texture[j+3] = 255;
j += 4;
}


fclose(l_file);

glBindTexture(GL_TEXTURE_2D, num_texture);



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_MIPMAP_NEAREST);


glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);



glTexImage2D(GL_TEXTURE_2D, 0, 4, infoheader.biWidth, infoheader.biHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, l_texture);



gluBuild2DMipmaps(GL_TEXTURE_2D, 4, infoheader.biWidth, infoheader.biHeight, GL_RGBA, GL_UNSIGNED_BYTE, l_texture);


free(l_texture);


return (num_texture);
}

Et quand je choisie la taille de mes photo (qunad je les sort de mon jeux, parce que je prend tout mes texture d'un jeu :P) sont en 256x256.