IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Effacer la couleur de fond d'un sprite [SDL 2.0]


Sujet :

SDL

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut Effacer la couleur de fond d'un sprite
    Bonjour à tous.

    j'ai une image avec un fond bleu : RVB = 0,0,255.

    J'aimerais effacer cette couleur de mon sprite.

    Je dois utiliser la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_SetRenderDrawColor(pRenderer, 0, 0, 255, 255);
    suivie de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_RenderClear(pRenderer);
    si j'ai bien compris.
    Or, ce code me remplie l'écran de bleu et non me le supprime.

    J'ai alors pensé a modifier la valeur alpha à 0 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDL_SetRenderDrawColor(pRenderer, 0, 0, 255, 0);
    mais rien n'a changé après ça.

    j'ai fais des recherches mais cela n'à rien donné.

    Merci de votre aide.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    D'après votre description du souci, vous cherchez à rendre une couleur sur sprite, comme couleur transparente. Pour cela, il faut utiliser SDL_SetColorKey().
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    oui j'avais vu aussi cette fonction mais lorsque j'écris ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SDL_SetColorKey(pSprite, SDL_FALSE, SDL_MapRGB(pSprite->format, 0, 0, 255));
     
    SDL_RenderCopy(pRenderer, pTexture, &test, &dest); // Copie du sprite grâce au SDL_Renderer
     
    SDL_RenderPresent(pRenderer); // Affichage
     
    SDL_RenderClear(pRenderer);
    pour supprimer le fond bleu de mon image, cela ne fonctionne pas et ne fait rien de plus...

    J'ai pensé que c'était pas la bonne fonction du coups :/

    donc je ne comprends pas ou est le problème... je vais chercher plus loin ! Merci !

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 859
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 859
    Points : 218 580
    Points
    218 580
    Billets dans le blog
    120
    Par défaut
    Oui, vous faites le SDL_SetColorKey() sur pSprite, mais après, ce n'est pas pSprite que vous utilisez pour afficher votre image.
    En réalité, vous devez tenter de faire le SDL_SetColorKey() avant de créer le pTexture à partir du pSprite. Ainsi, pTexture devrait contenir les nouvelles informations de pSprite et donc, appliquer le changement.

    Par contre, je ne suis pas sur à 100 % que le SDL_SetColorKey() soit compatible avec les SDL_Texture. C'est pour ça qu'il faut tester.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    ok ok donc si j'ai bien compris ce n'est qu'une question de positionnement.

    Cela dit,après modification (si j'ai bien compris), mon code deviens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void chargementTexture()
    {
    	SDL_SetColorKey(pSprite, SDL_FALSE, SDL_MapRGB(pSprite->format, 0, 0, 255));
     
    	pTexture = SDL_CreateTextureFromSurface(pRenderer, pSprite); // Préparation du sprite
     
    	if (!pTexture)
    	{
    		std::cerr << "Échec de création de la texture :" << std::endl << SDL_GetError() << std::endl;
    		exit(-4);
    	}
    }
    mais ce code ne fonctionne pas quand même

  6. #6
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 169
    Points : 60
    Points
    60
    Par défaut
    Autant pour moi il falait la valeur SDL_TRUE et non SDL_FALSE.

    Merci à vous .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/03/2011, 11h38
  2. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  3. Réponses: 4
    Dernier message: 23/06/2004, 14h30
  4. debutant : couleur de fond d'une application direct3D
    Par ptidrone dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2004, 17h08
  5. Changer la couleur de fond de l'écran
    Par tnk dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 19/01/2003, 01h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo