Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Higestromm

Pages: [1]
1
Système / Visual c++2015
« le: Mars 07, 2016, 05:08:00 pm »
Bonjour,

Je suis passé aujourd'hui sous Visual c++ 2015 et j'ai un message d'erreur :

'back_inserter' : n'est pas membre de 'std' dans sfml-2.3.2\include\sfml\system\string.inl   31

ligne 31 on à ca :
template <typename T>
String String::fromUtf8(T begin, T end)
{
    String string;
    Utf8::toUtf32(begin, end, std::back_inserter(string.m_string));
    return string;
}
 

En cherchant un peu sur le net je suis tombé sur cette discutions :
http://stackoverflow.com/questions/2959234/vs2008-vs2010-leads-to-cryptic-stl-errors

Qui elle mène vers ça :
https://msdn.microsoft.com/en-us/library/bb531344.aspx

A priori, avec la dernière version de visual c++ il faudrait ajouter manuellement :
#include <iterator>

Je dit une connerie ou pas ?

2
Graphique / [RESOLU] Positionner un sf::text verticalement
« le: Juillet 18, 2015, 01:53:13 pm »
Bonjour,

J’essaie d'afficher un sf::text centré dans un bouton mais je constate que l'alignement vertical n'est pas correct lors de l'affichage. Dans l'exemple ci-dessous, j'affiche un sf::text entoutré d'un rectangle qui est sensé représenter sa zone d'affichage mais le sf::text s'affiche en dessous.

void SLabel::draw(sf::RenderTarget &p_target, sf::RenderStates p_states) const
{
        // label est un membre de ma classe de type sf::text

        p_states.transform *= getTransform();

        sf::RectangleShape rect(sf::Vector2f(label.getLocalBounds().width, label.getLocalBounds().height));
        rect.setPosition(label.getPosition());
        rect.setOutlineColor(sf::Color::Red);
        rect.setFillColor(sf::Color::Transparent);
        rect.setOutlineThickness(1);

        p_target.draw(rect, p_states);

        p_target.draw(label, p_states);
}

En cherchant par-ci par-là j'ai lu que la zone d'affichage d'un sf::text dépendaient de la hauteur du plus haut caractère contenu dans la police et non du plus haut caractère affiché.

Du coup je suis un peu paumé. Apparemment getLocalBound me retourne bien la hauteur maximale de mon texte affiché donc il faudrait que je connaisse la hauteur du plus haut caractère de ma police pour créer un décalage et du coup positionner correctement mon sf::text.

Comment connaitre cette taille ?

Merci

3
Graphique / Affichage d'un sprite qui apparait en blanc ... parfois
« le: Juillet 01, 2015, 03:31:01 pm »
Bonjour,

Je code actuellement un mini GUI dont les widgets sont des images.

Donc pour pouvoir afficher une Frame par exemple j'utilise une image que je découpe en 9 et que je positionne comme il faut pour avoir quelque chose de propre.

Jusqu'ici tout vas bien...

La ou ca déconne c'est que pour éviter de charger 25 fois la même skin en mémoire, je place les images dans une classe dont je récupère un singleton pour accéder aux données :



class SFMLGuiData
{
/*---------------------------------*/
/*-- CONSTRUCTEURS / DESTRUCTEURS --*/
/*---------------------------------*/

public : SFMLGuiData(void);

public : ~SFMLGuiData(void);

/*----------------*/
/*-- ACCESSEURS --*/
/*----------------*/

public : static SFMLGuiData& SFMLGuiData::GetInstance();

/*----------------------*/
/*-- AUTRES FONCTIONS --*/
/*----------------------*/

public : void LoadGui(std::string p_guiName);

/*---------------------*/
/*-- DONNEES MEMBRES --*/
/*---------------------*/

public : sf::Texture tsframe[9];
public : int sFrameCutSize;
};


// Ici je récupère mon singleton
SFMLGuiData& SFMLGuiData::GetInstance()
{
        static SFMLGuiData guidata;
        return guidata;
}

void SFMLGuiData::LoadGui(std::string p_guiName)
{
        // Je charge mon image et je la découpe en 9 textures
        sf::Image img;
        img.loadFromFile("data/gui/" + p_guiName + "/sframe.png");

        sFrameCutSize = img.getSize().x/3;
        int i(0);
        for (int y(0);y<3;y++)
                for (int x(0);x<3;x++)
                {
                        i=y*3+x;
                        tsframe[i].loadFromImage(img,sf::IntRect(x*sFrameCutSize, y*sFrameCutSize, sFrameCutSize, sFrameCutSize));
                        tsframe[i].setRepeated(true);
                }
}
 


Avec ca je créer mon widget et je l'affiche comme suit :

SFrame::SFrame(....) :
{
        SFMLGuiData &data = SFMLGuiData::GetInstance();
        for (int i(0);i<9;i++) sframe[i].setTexture(data.tsframe[i]);
}

void SFrame::draw(sf::RenderTarget &p_target, sf::RenderStates p_states) const
{
        // On dessine la frame
        p_states.transform *= getTransform();
        for (int i(0);i<9;i++) p_target.draw(sframe[i], p_states);
}

Une SFrame est inclus dans un vecteur qui ressemble a ca :
private : std::vector<SWidget *> widgetList;

Le truc c'est que tout s'affiche correctement a partir du moment ou je ne quitte pas ma fenêtre de jeu pour en ouvrir une autre (en gros le vecteur de SWidget est détruit totalement et un autre est créer).
Des que je passe a une autre fenêtre j'ai une zone blanche qui apparait dans mon affichage.
Normalement mon singleton n'étant pas détruit, les textures ne doivent pas l'être et donc mes images devraient s'afficher correctement.

J'ai beau relire je ne trouve pas d'ou viens mon erreur.

Quelqu'un peux m'aider ?

Je vais poster des screenshots pour bien montrer

Pages: [1]