Les textures en OpenGL

fireuo Messages postés 55 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 17 août 2006 - 16 mars 2006 à 05:49
fireuo Messages postés 55 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 17 août 2006 - 17 mars 2006 à 04:13
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

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 mars 2006 à 16:17
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.
0
fireuo Messages postés 55 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 17 août 2006
16 mars 2006 à 22:51
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.
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
17 mars 2006 à 00:04
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 ?
0
fireuo Messages postés 55 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 17 août 2006
17 mars 2006 à 04:13
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.
0
Rejoignez-nous