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

Auteur Sujet: [Résolu] Problème d'affichage d'un sprite  (Lu 3472 fois)

0 Membres et 1 Invité sur ce sujet

christophedlr

  • Full Member
  • ***
  • Messages: 153
    • Voir le profil
    • E-mail
[Résolu] Problème d'affichage d'un sprite
« le: Août 05, 2012, 11:03:42 pm »
Bonsoir à tous,

Je voulais faire quelques tests avec la SFML mais je tombe sur un problème. J'ai un sprite d'herbe de 32x32 et aucuns contours noir. Pourtant quand j'en met plusieurs bout à bout on voit un bord noir et je ne sais pas d'où est-ce qu'il provient.

Alors première chose le code :
#include <iostream>
#include <SFML/Graphics.hpp>

int main (void)
{
    using namespace sf;

    RenderWindow window( VideoMode(640, 480, 32), "Test Vues" );
    Image grass, water, bridge;
    Sprite grassSp[19], waterSp[19], bridgeSp[19];

    grass.LoadFromFile("grass.png");
    water.LoadFromFile("water.png");
    bridge.LoadFromFile("bridge.png");


    while ( window.IsOpened() )
    {
        Event event;
        while ( window.GetEvent(event) )
        {
            if (event.Type == Event::Closed)
            {
                window.Close();
            }
        }

        window.Clear();

        for (int i = 0; i < 19; i++)
        {
            grassSp[i].SetImage(grass);
            grassSp[i].SetPosition(32*i, 0);
            window.Draw(grassSp[i]);
        }

        window.Display();
    }

    return 0;
}
 

Ensuite voici une photo d'écran du résultat :


Enfin voici le sprite que j'ai utilisé :


Si quelqu'un pouvait m'aider. Je suppose que cela provient du placement du sprite qui n'est pas bon, mais bon j'ai pas trouvé la solution.


Merci d'avance pour votre aide.
« Modifié: Août 06, 2012, 11:31:24 am par christophedlr »

Chaore

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : Problème d'affichage d'un sprite
« Réponse #1 le: Août 06, 2012, 01:04:10 am »
Regarde, il y a 19 sprite affiché, et tu as écris ceci:

for (int i = 0; i < 19; i++)



Change pour:

for (int i = 0; i < 20; i++)


EDIT:  D'ailleur, n'oublie pas de modifié ta 8ième ligne.


Vu que c'est du SFML 1.6 j'ai pas essayé ce que je te dis, mais à première vu c'est clairement ce qui cloche.
« Modifié: Août 06, 2012, 01:10:55 am par Chaore »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème d'affichage d'un sprite
« Réponse #2 le: Août 06, 2012, 08:12:47 am »
Essaye de désactiver le filtrage bilinéaire de tes images.

grass.SetSmooth(false);
Laurent Gomila - SFML developer

christophedlr

  • Full Member
  • ***
  • Messages: 153
    • Voir le profil
    • E-mail
Re : Problème d'affichage d'un sprite
« Réponse #3 le: Août 06, 2012, 11:27:20 am »
Chaore,

Si je met 20 ca foire car il ne peut afficher le dernier sprite. Mon problème n'est pas le nombre mais ce contour noir qui apparait autour de chaque sprite, d'une part c'est archi laid d'autre part àa me bouffe de la place.

Laurent,

Merci pour ta réponse ça marche. Me reste plus qu'à voir comment faire pour compléter la ligne vu que 20 ca foire, j'ai pas du comprendre comment calculer suivant la taille de la fenêtre. C'est du 640x480, j'ai donc calculer 640/32 (taille du sprite) soit 20 sprite par ligne mais là ça foire normal on voit qu'il y a pas la place d'afficher.
Quand on dit 640x480, cela veut dire la taille en content les bords de la fenêtre ? Si oui comment calculer la partie rendue alors ?

EDIT : c'est bon, en fait ce dernier problème provenait de mon tableau de sprite trop petit lol.
« Modifié: Août 06, 2012, 11:31:05 am par christophedlr »