Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
5299 connectés 

 


Dernière réponse
Sujet : Open GL multitexturing et la matrice de textures....
Zeross Et bien merci beaucoup tu as raison  :jap: !
Donc pour ceux que ça intéresse, comme youdontcare vient de le dire il suffit de mettre le glMatrixMode(GL_TEXTURE) après le (*glActiveTextureARB)(GL_TEXTUREX_ARB); pour modifier uniquement la texture de l'unité de texture X. Chaque unité de texture a donc une matrice de textures associée c'est très fort.
 
Encore merci !

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Zeross Et bien merci beaucoup tu as raison  :jap: !
Donc pour ceux que ça intéresse, comme youdontcare vient de le dire il suffit de mettre le glMatrixMode(GL_TEXTURE) après le (*glActiveTextureARB)(GL_TEXTUREX_ARB); pour modifier uniquement la texture de l'unité de texture X. Chaque unité de texture a donc une matrice de textures associée c'est très fort.
 
Encore merci !
youdontcare http://berkelium.com/OpenGL/GDC99/multitexture.html
 
" When you call glBindTexture(), the texture object is bound to the active texture unit specified by texture.  Likewise, enabling and disabling textures and modifying texture environment, texture matrix and texgen modes affect only the active texture unit. Modifying a texture array or parameters affects the texture object bound to the active texture unit, but such changes are visible to other texture units if the texture is bound to multiple texture units simultaneously. "
youdontcare toutes les coordonnées (au sens x, y, ...) des textures sont tranformées par ta matrice.  
 
à chaque stage (GL_TEXTURE0_ARB, GL_TEXTURE1_ARB, GL_TEXTUREX_ARB ...) de mapping correspond une matrice. il faut donc spécifier ta matrice pour chaque stage.
 
comment ? heu ... :) je n'ai fait ça que sous dx. tu peux essayer un glActiveTextureARB(GL_TEXTURE1_ARB) et après ça un glMatrixMode() standard. ou peut-être y'a-t-il des constantes spécifiques qui permettent de faire glMatrixMode(GL_TEXTURE0) par ex.
Zeross voilà j'ai le code suivant (pas bien beau je vous l'accorde mais bon c'est essentiellement pour des tests ;)):
 
void
draw()
{  
 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 GLfloat light_position[]={0.0, 1.0, 1.0, 0.0};
 
 glMatrixMode(GL_TEXTURE);
 glLoadIdentity();
 glTranslatef(transX, transY,0);
 
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 
 (*glActiveTextureARB)(GL_TEXTURE0_ARB);
 glBindTexture(GL_TEXTURE_2D, tex_name[WALL_ID]);
 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
 glEnable(GL_TEXTURE_2D);
 
 (*glActiveTextureARB)(GL_TEXTURE1_ARB);
 glBindTexture(GL_TEXTURE_2D, tex_name[LIGHTMAP_ID]);
 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
 glEnable(GL_TEXTURE_2D);
 
 
 
 glBegin(GL_QUADS);
  (*glMultiTexCoord2fARB)(GL_TEXTURE0_ARB, 0.0, 0.0);
  (*glMultiTexCoord2fARB)(GL_TEXTURE1_ARB,0.0, 0.0);
  glNormal3f(0.0, 0.0, 1.0);
  glVertex3f(-5.0, -5.0, -10.0);
 
  (*glMultiTexCoord2fARB)(GL_TEXTURE0_ARB,0.0, 1.0);
  (*glMultiTexCoord2fARB)(GL_TEXTURE1_ARB,0.0, 1.0);
  glNormal3f(0.0, 0.0, 1.0);
  glVertex3f(-5.0, 5.0, -10.0);
 
  (*glMultiTexCoord2fARB)(GL_TEXTURE0_ARB,1.0, 1.0);
  glMultiTexCoord2fARB(GL_TEXTURE1_ARB,1.0, 1.0);
  glNormal3f(0.0, 0.0, 1.0);
  glVertex3f(5.0, 5.0, -10.0);
 
  (*glMultiTexCoord2fARB)(GL_TEXTURE0_ARB,1.0, 0.0);
  (*glMultiTexCoord2fARB)(GL_TEXTURE1_ARB,1.0, 0.0);
  glNormal3f(0.0, 0.0, 1.0);
  glVertex3f(5.0, -5.0, -10.0);
 glEnd();
 
 glDisable(GL_TEXTURE_2D);
 
 SwapBuffers(dc);
}
 
et j'aimerais savoir pourquoi lorsque j'applique une translation sur la matrice de textures seule la lightmap voit sa position modifiée ? A priori si j'en crois le redbook toutes les coordonnées de textures doivent être multipliées par la matrice de textures, donc la texture du mur devrait se déplacer aussi....

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)