2009-11-22 3 views
2

Je suis sur le point de porter tout mon rendu de "vieux" opengl à glsl. Maintenant j'ai un mesh avec différentes textures, donc dans "old" gl j'ai juste utilisé bindTexture pour changer la texture. Je suppose que j'ai encore besoin de faire ça, mais il manque quelque chose, puisque tout semble être rendu avec la première texture seulement.comment rendre plusieurs textures avec GLSL

uniform sampler2D tex; 
void main() { 
    gl_FragColor = tex2D(tex, gl_TexCoord[0].st); 
} 

"tex" est le nom de la texture que je mets à GLSL comme ceci:

int loc = glGetUniformLocationARB(id, "tex"); 
glUniform1iARB(loc, 0); 

Note: Je ne parle pas multitexturing! :-)

+0

Donc, si ma réponse précédente était fausse, pourriez-vous nous montrer un peu plus de votre code C? – Thomas

Répondre

6

Vous avez lié l'unité de texture 0 au sampler2D, mais vous devez également lier la texture à l'unité de texture. Donc, ce serait simplement un appel glBindTexture.

+0

merci, yepp, comme je l'ai dit, je fais toujours l'appel glBindTexture, mais même si je lie une texture différente à un moment précis, je vois toujours l'objet avec la texture précédente. – clamp

+1

glBindTexture est l'appel qui change ce qui est lié. Si cela ne fonctionne pas pour vous, cela signifie que votre appel à glBindTexture est faux ou que vous modifiez une unité de texture différente (par exemple parce que vous avez appelé glActiveTexture et oublié de réinitialiser l'unité de texture active à 0). – Bahbar

+0

bahbar: merci, c'était ça! J'ai accidentellement eu une autre unité de texture active! – clamp

5

J'ai été confondu avec la façon de dire à GLSL quelle unité de texture utiliser pour quel échantillonneur. J'ai cherché heures pour mon problème et je n'ai pas pu le résoudre parce que je pense que ce sujet n'est pas très bien expliqué dans toute la littérature là-bas.

ici est un précieux explaination: (voir la partie "Utilisation de textures avec GLSL") http://nehe.gamedev.net/data/articles/article.asp?article=21

peut-être cela aide quelqu'un!

Questions connexes