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

  FORUM HardWare.fr
  Programmation

  Open GL multitexturing et la matrice de textures....

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Open GL multitexturing et la matrice de textures....

n°47725
Zeross
Posté le 19-07-2001 à 01:56:46  profilanswer
 

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....


---------------
Une brève histoire du GPU -  PS5, Xbox Series X : la fin du bond technologique
mood
Publicité
Posté le 19-07-2001 à 01:56:46  profilanswer
 

n°47728
youdontcar​e
Posté le 19-07-2001 à 02:18:28  profilanswer
 

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.

n°47729
youdontcar​e
Posté le 19-07-2001 à 02:26:07  profilanswer
 

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. "

n°47730
Zeross
Posté le 19-07-2001 à 02:28:40  profilanswer
 

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 !


---------------
Une brève histoire du GPU -  PS5, Xbox Series X : la fin du bond technologique

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  Open GL multitexturing et la matrice de textures....

 

Sujets relatifs
[C/Linux] open ne marche po :cry:Cannot open include file: 'GL/glut.h'.
[open GL] pas derreur pas de warnings a la compilation 21 a lexecutionbleme avec open GL
OPEN GL[ada95] comment afficher une matrice?
[math] projection perspective et matrice projective[Open GL] problème de dll
comment utiliser les fichiers de 3D Studio avec Open GL ?Textures en tout genre
Plus de sujets relatifs à : Open GL multitexturing et la matrice de textures....


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR