Salut Barraq !!!, commence a avoir de la gueule ton soft !!! Félicitation !!!.
Pour la transparence, j'ai deja utilisé du RGBA avec du TGA et ca marche donc chope peut etre un autre loader....
Pour l'histoire des BMP j'ai pas trop compris comment tu les melanges (j'ai regarde vite fait... j'ai plus le tps de rien faire....) on dirai que tu fais du multi-texturing en dessinant 2 fois le meme objet...., mais au sinon, si tu as les arbres noirs ,cela peut etre un probleme de couleur ou une mauvaise fonction de blending ou les deux.
Désolé, j'ai pas mon book d'OpenGL sous la main... il est au boulot....
sinon pour les BMPs sa avance un petit peu, le noir vient du fait que
le system de double couche de BMP de marche pas avec le
multi-texturing... donc j'ai placé a dessiner les arbres aprés
l'affichage de la map et sa allé déja mieux, ensuite j'affiche le
skybox avant car la couleur noir semblait venir du fait que le fond de
mon écran est noir avant que j'affiche mon skybox.
Mais cela n'empeche pas que je n'est pas le meme résultat que avec TGA....
mais meme si je change de loader 32bit sa rest HUGE pour une texture....
Enfin la dead line c dans 3 jours, donc je vais implementer les deux versions.
Si je trouve la solution je la posterais ici.
Et bientot toutes les sources de mon code seront mis en ligne, mais faut que j'attend mon examination avant ...
Figure toi que pas plus tard qu'hier j'ai eu la meme erreur d'affichage... maintenant, a savoir si c'est la meme que toi...
J'affichais mon terrain en multitexturing puis apres quelques objets et ceux qui utilisaient une texture etaient tout noir.... L'erreur c'est que je ne désactivais pas totalement/correctement les étages de textures apres le rendu du terrain et SURTOUT il faut toujours active le premier etage de texture en sortie... (il me semble que je te l'avais dis... en voici la preuve ...).
Sinon coté boulot c'est impec'... rien à dire... OpenGL / C++ ... ambiance sympa ... c la fete...
// activation de l'unite de texture 0
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,_textureNames[0]);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
// activation de l'unite de texture 1
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D,_textureNames[1]);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
// coords de l'unite de texture 0
glClientActiveTextureARB(GL_TEXTURE0_ARB);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2,GL_FLOAT,0,_texCoordArrayUnit0);
// coords de l'unite de texture 1
glClientActiveTextureARB(GL_TEXTURE1_ARB);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2,GL_FLOAT,0,_texCoordArrayUnit1);
// activation des differents tableaux
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
// les tableaux....
glColorPointer(4,GL_FLOAT,0,_colorArray);
glNormalPointer(GL_FLOAT,0,_normalArray);
glVertexPointer(3,GL_FLOAT,0,_vertexArray);
// on dessine
glDrawArrays(GL_TRIANGLES,0,3*_numFaces);
// disable des tableaux
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
// disable coord unit 1
glClientActiveTextureARB(GL_TEXTURE1_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
// disable coord unit 0
glClientActiveTextureARB(GL_TEXTURE0_ARB);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
// disable unit 1
glActiveTextureARB(GL_TEXTURE1_ARB);
glDisable(GL_TEXTURE_2D);
// disable unit 0
glActiveTextureARB(GL_TEXTURE0_ARB);
glDisable(GL_TEXTURE_2D);
Et voila...., maintenant que j'ai poste je remarque qu'il y a peut etre des appels inutiles, mais ca marche...