Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Texture non trouvé dans le shader (SFML 2.0)  (Lu 2831 fois)

0 Membres et 1 Invité sur ce sujet

thoced

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Texture non trouvé dans le shader (SFML 2.0)
« 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
« Modifié: Juillet 29, 2012, 02:55:38 pm par Laurent »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Texture non trouvé dans le shader (SFML 2.0)
« Réponse #1 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).
Laurent Gomila - SFML developer

thoced

  • Newbie
  • *
  • Messages: 16
    • Voir le profil
Re : Texture non trouvé dans le shader (SFML 2.0)
« Réponse #2 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.