Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: christophedlr le Août 05, 2012, 11:03:42 pm

Titre: [Résolu] Problème d'affichage d'un sprite
Posté par: christophedlr 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 :
(http://img690.imageshack.us/img690/7083/capturechn.png)

Enfin voici le sprite que j'ai utilisé :
(http://img198.imageshack.us/img198/7092/grassf.png)

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.
Titre: Re : Problème d'affichage d'un sprite
Posté par: Chaore 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.
Titre: Re : Problème d'affichage d'un sprite
Posté par: Laurent le Août 06, 2012, 08:12:47 am
Essaye de désactiver le filtrage bilinéaire de tes images.

grass.SetSmooth(false);
Titre: Re : Problème d'affichage d'un sprite
Posté par: christophedlr 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.