Pages: 1
Voilà, j'aurai voulu savoir si d'autres personnes on le même problème que moi. Je n'arrive plus à utiliser plusieurs textures dans mes GLSL.
Avant, je faisait ça:
Et dans mon pixel shader:
uniform sampler2D Tex1; // texture sol uniform sampler2D Tex2; // texture herbe uniform sampler2D Tex3; uniform sampler2D Tex4; uniform float alpha_herbe=1.0f; void main(void) { gl_FragColor = texture2D(Tex2, gl_TexCoord[0].st); // J'ai aussi essayé avec Tex3 et Tex4 }
Enfin, dans mon main:
Normalement vu que gl_fragcolor est "égal" à Tex1, ça devrait m'afficher la texture d'herbe mais non, ça m'affiche aussi la texture. En bref, quoi que je fasse ça m'affiche la texture du slot 0.
Par contre sous directx pas de problème grace ": register(sX)" avec X index de la texture.
Edit : j'ai trouvé ça : related post
Dernière modification par johnplayer (20-10-2012 09:47:28)
Hors ligne
C'est bon j'ai trouvé en bidouillant. En fait une modif a été faite dans la SVN et il ne faut plus faire de (f32*)(&int), il faut envoyer directement un f32*.
Voilà, un truc con comme il en arrive souvent.^^
Hors ligne
En retard de 15 ans mais j'ajoute ma pierre à l'édifice quand même.
Il vaut mieux éviter de passer un float, un int est plus propre et le système de chaîne à changer également :
int MonCanal = 1;
services->setPixelShaderConstant(services->getPixelShaderConstantID("alpha_herbe"),&MonCanal , 1);
Voilou
Dernière modification par Copland (03-05-2013 11:52:13)
Hors ligne
de plus t'auras un memleak avec un new a cette endroit
perso j'utilise un array sa permet d'éviter des call inutile pour 16pauve texture
Hors ligne
Pages: 1
Options | Liens officiels | Caractéristiques | Statistiques | Communauté |
---|---|---|---|---|
Corrections |
|
xhtml 1.0 css 2.1 Propulsé par FluxBB Traduit par FluxBB.fr |
882 membres 1429 sujets 11119 messages |
Dernier membre inscrit: LiseBuisson96 49 invités en ligne Aucun membre connecté RSS Feed |