Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: thoced le Juillet 29, 2012, 11:08:33 am

Titre: Texture non trouvé dans le shader (SFML 2.0)
Posté par: thoced le Juillet 29, 2012, 11:08:33 am
Bonjour à tous,

je dois utiliser deux textures dans un shader, j'ai donc créé deux sampler2d nommés tex et tex2.

voici le code fragment :


uniform sampler2D tex;

uniform sampler2D tex2;

void main()
{
   

      vec4 texel = texture2D(tex,gl_TexCoord[0].st);

      vec4 mtexel = texture2D(tex2,gl_TexCoord[0].st);

        if(texel.rgb == vec3(0,0,0))
                texel.rgba = vec4(0.5,0.5,0.5,0.1);


    gl_FragColor =   texel;


}

dans mon appel voici ce que je fais:

                sf::RenderStates rs;
                rs.shader = _shader;
                _shader->setParameter("tex",sf::Shader::CurrentTexture);
                _shader->setParameter("tex2",_stencil.getTexture());
                app->draw(sp,rs);

lorsque je ne passe qu'une texture "tex", cela ne pose aucun probleme par contre lorsque je tente de passer les deux textures, lors de l'éxécution j'obtiens le message suivant affiché sur la console ::

Citer
Texture  "tex2" not found in shader

Quelqu'un a t il une explication à mon probleme ?

merci d'avance
Titre: Re : Texture non trouvé dans le shader (SFML 2.0)
Posté par: Laurent le Juillet 29, 2012, 02:54:14 pm
Le compilateur GLSL est très malin : si une variable n'est pas utilisée, il la vire complètement de la définition du shader. Or ta variable tex2 n'est pas utilisée (indirectement, car mtexel n'est pas utilisée dans le calcul du pixel final).
Titre: Re : Texture non trouvé dans le shader (SFML 2.0)
Posté par: thoced le Juillet 29, 2012, 03:18:53 pm
Ah effectivement, moi qui avançait pas à pas pour éviter tout problème, je n'utilisait donc pas la variable mtexel dans ce cas de figure.

Un grand merci pour la réponse.