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

Auteur Sujet: Diviser deux textures.  (Lu 5159 fois)

0 Membres et 1 Invité sur ce sujet

LEpigeon888

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
Re : Diviser deux textures.
« Réponse #15 le: Mars 16, 2014, 11:40:43 pm »
Ok, dommage.

math1992

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
    • E-mail
Re : Diviser deux textures.
« Réponse #16 le: Mars 17, 2014, 12:28:28 am »
 Voici un code possible avec les images, mais faire cela à chaque frame, pauvre ordi.

//J'assume que les textures sont de meme dimension
bool divideTexture( const sf::Texture& TextureA, const sf::Texture& TextureB, sf::Texture& Result )
{
    sf::Image
    ImageA = TextureA.copyToImage(),
    ImageB = TextureB.copyToImage(),
    ImageC;

    ImageC.create( TextureA.getSize().x, TextureA.getSize().y );

    sf::Color ColorA, ColorB, ColorC;

    for( unsigned int x(0); x < ImageA.getSize().x; x++ )  // x++ et ++x sont les memes dans une boucle
    {
        for( unsigned int y(0); y < ImageA.getSize().y; y++ )
        {
            ColorA = ImageA.getPixel( x, y );
            ColorB = ImageB.getPixel( x, y );

            ColorC.r = ( ColorB.r != 0 ) ? 255 * ( (ColorA.r / 255.f) / (ColorB.r / 255.f) ) : ( 255 );
            ColorC.g = ( ColorB.g != 0 ) ? 255 * ( (ColorA.g / 255.f) / (ColorB.g / 255.f) ) : ( 255 );
            ColorC.b = ( ColorB.b != 0 ) ? 255 * ( (ColorA.b / 255.f) / (ColorB.b / 255.f) ) : ( 255 );
            ColorC.a = 255;        //opaque

            ImageC.setPixel( x, y, ColorC );
        }//for y
    }//for x

    return Result.loadFromImage( ImageC );
}