OpenGL -> multitexturing -> blend problem - C++ - Programmation
Marsh Posté le 19-04-2006 à 15:11:57
Nop glMultiTexCoord2fARB, (ou glMultiTexCoord2f, ca dépend chez qui ...), c'est pour le rendu polygone par polygone....
cad avec glBegin(GL_TRIANGLES) ou autre... et pour chaque vertex, tu précise les coordonées de chaque texture avec glMultiTexCoord2fARB.
Moi j'utilise glDrawArrays... et non glBegin & glVertex etc..
Beaucoup plus performant
Marsh Posté le 19-04-2006 à 15:44:18
Mais ton multitexturing ne fonctionne pas avec ca non plus ?
Marsh Posté le 19-04-2006 à 17:36:50
si d'ou le glTexCoordPointer qui définit le pointeur vers le tableau de floats qui contient les coordonées texture u,v de chaque vertex.
pour les polygones, je spécifie le pointeur vers le tableau de coordonées x,y,z dans une autre partie du code.
pareil pour les normales.
et ca marche sauf le blending qui foire... je sais pas pourquoi.
une remarque : la ligne
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, BL_BLEND );
quand je mets
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );
j'obtiens presque ce que je veux... mis à part que la texture0 est influenée par les lumières, alors que texture1 ne l'est aps : la texture ressort dans les zones qui sont sensées etres sombres
Marsh Posté le 04-12-2007 à 19:38:31
Je fais la même chose et j'ai exactement le même problème. Des news ?
Marsh Posté le 19-04-2006 à 03:57:20
J'utilise le multitexturing pour mon moteur 3D.
un pbroblème se pose : mes textures sont chargées parfaitement, sur 32 bits. ( GL_RGBA )
Seulement voila ... le blending de deux textures se passe bizzarement :
quand j'utilise glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND ); apres activation de ma texture,
tout se passe très bien niveau alpha, mais par contre, les couleurs sont comme "en négatif"...
(tu blanc apparait noir, et inversement...)
Inverser directement les couleurs de ma texture serait très handicapant pour d'autres raisons ^^ ...
Où doisje placer un glBlendFunc, et avec quels paramètres, pour que ca revienne à la normale ???
petite info : c'est du rendering par arrays, mon code ressemble donc à ca :
avec 'texs' qui est un tableau des textures GL_TEXTURE0 , GL_TEXTURE1 etc... (ou GL_TEXTURE_ARB0 , etc... comme vs voulez)
glActiveTexture(texs[level]);
glClientActiveTexture(texs[level]);
glBindTexture(GL_TEXTURE_2D,glTex);
glEnable(GL_TEXTURE_2D);
if( level != 0 )
{
//glBlendFunc(GL_SRC_ALPHA,GL_ONE);
glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL );//GL_BLEND
}
glTexCoordPointer(2, arrTyp, 0, coordPtr);