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.


Messages - timiway

Pages: [1]
1
Général / Re : [Sfml 2.0] Segmentation Fault
« le: Février 24, 2013, 06:38:19 pm »
Problème réglé, la boucle était mal paramétrée... désolé  :-\

Merci pour ta réactivité!
PS: La 2.0 est vraiment bien merci beaucoup ^^

2
Général / Re : [Sfml 2.0] Segmentation Fault
« le: Février 24, 2013, 06:11:04 pm »
désolé, j'ai mal recopié,

c'est

void Page::Draw(RenderWindow *window)
{
    Objet::Draw(window);
    ...
}

3
Général / Re : [Sfml 2.0] Segmentation Fault
« le: Février 24, 2013, 12:05:28 pm »
Merci pour ta réponse.

J'ai déjà utilisé le debugger, il me dit que c'est lors de l'appel de la fonction Draw de ma class Page dans mon main, plus précisément lors de l'emploi de Objet::Draw dans cette fonction. Et c'est toujours la première ligne de Objet Draw qui crash, lors de l'appel de variable ou fonctions membre. Cette fonction Objet::Draw fonctionne parfaitement dans d'autres conditions. ..

++ et merci d'avance

4
Général / [Sfml 2.0] Segmentation Fault
« le: Février 24, 2013, 12:24:13 am »
Bonsoir à tous.

Je ne sais pas si l'erreur vient de SFML ou pas...
En tout cas, elle me pose vraiment problème, je cherche je cherche mais je ne trouve rien qui pourait être la cause de l'erreur.
J'arrive à compiler, mais le programme crash au lancement...


Désolé pour tout ce Code mais vu que tout à l'air concerné par l'erreur, j'ai préféré tout vous montrer l'erreur se situerait dans la fonction Objet::Draw

// main.cpp

using namespace sf;

int main()
{
    RenderWindow window(VideoMode(800, 600), "Test");

    FileManager::Get().addTexture("res/logo.png");

    Objet image;
    image.SetFond(FileManager::Get().getTexture("res/logo.png"),1);
    image.SetFond(Color(255,255,155));
    image.Center(true);

    Page page;
    page.SetFond(Color(255,155,255),Color(205,145,5),3);
    page.newObjet(image);

    while (window.isOpen())
    {
        Event event;
        while (window.pollEvent(event))
        {
            if (event.type == Event::Closed)
                window.close();

            if (event.type == Event::Resized)
            {
                window.setView(View(sf::FloatRect(0, 0, event.size.width, event.size.height)));
            }
        }

        page.Draw(&window);

        window.display();
    }

    return EXIT_SUCCESS;
}
 
//Objet.h
class Objet
{
    public:
        Objet();
        Objet(sf::Vector2f Taille,sf::Vector2f Position);
        void update();
        void SetFond(sf::Color Couleur);
        void SetFond(sf::Color Couleur1,sf::Color Couleur2, int Dir); // dir=0 vert dir=1 horiz dir=2 diag1 dir=3 diag2
        void SetFond(sf::Texture* Texture, bool repet); // true répeté false étiré
        void SetTaille(sf::Vector2f Taille);
        void SetPosition(sf::Vector2f Position);
        void SetScale(sf::Vector2f Scale);
        void SetScale(float Scale);
        void Center(bool center);
        void Draw(sf::RenderWindow *window);

    protected:

        sf::Vector2f m_Taille;
        sf::Vector2f m_Position;
        sf::Vector2f m_Scale;
        sf::VertexArray m_Fond;
        sf::Texture *m_ImageFond;
        bool m_Center;
        bool m_IsImageFond;

    private:
};
//Objet.cpp
#include "../include/Objet.h"

using namespace sf;

Objet::Objet():m_Taille(100,100),m_Position(0,0),m_Scale(1,1), m_Center(false), m_IsImageFond(false)
{
    m_Fond=VertexArray(sf::TrianglesFan, 4);
    update();
}

Objet::Objet(sf::Vector2f Taille,sf::Vector2f Position):m_Taille(Taille),m_Position(Position),m_Scale(1,1), m_Center(false), m_IsImageFond(false)
{
    m_Fond=VertexArray(sf::TrianglesFan, 4);
    update();
}

void Objet::SetFond(sf::Color Couleur)
{
    m_Fond[0].color = Couleur;
    m_Fond[1].color = Couleur;
    m_Fond[2].color = Couleur;
    m_Fond[3].color = Couleur;
}

void Objet::SetFond(sf::Color Couleur1,sf::Color Couleur2, int Dir) // dir=0 vert dir=1 horiz dir=2 diag1 dir=3 diag2
{
    switch(Dir)
    {
        case 0:{
            m_Fond[0].color = Couleur1;
            m_Fond[1].color = Couleur2;
            m_Fond[2].color = Couleur2;
            m_Fond[3].color = Couleur1;
        }break;
        case 1:{
            m_Fond[0].color = Couleur1;
            m_Fond[1].color = Couleur1;
            m_Fond[2].color = Couleur2;
            m_Fond[3].color = Couleur2;
        }break;
        case 2:{
            m_Fond[0].color = Couleur1;
            m_Fond[1].color = ColorMix(Couleur1,Couleur2);
            m_Fond[2].color = Couleur2;
            m_Fond[3].color = ColorMix(Couleur1,Couleur2);
        }break;
        case 3:{
            m_Fond[0].color = ColorMix(Couleur1,Couleur2);
            m_Fond[1].color = Couleur1;
            m_Fond[2].color = ColorMix(Couleur1,Couleur2);
            m_Fond[3].color = Couleur2;
        }break;
        default:{
            m_Fond[0].color = ColorMix(Couleur1,Couleur2);
            m_Fond[1].color = ColorMix(Couleur1,Couleur2);
            m_Fond[2].color = ColorMix(Couleur1,Couleur2);
            m_Fond[3].color = ColorMix(Couleur1,Couleur2);
        }break;
    }
}

void Objet::SetFond(Texture* Texture, bool repet)
{
    Image img;
    m_ImageFond=Texture;
    m_IsImageFond=true;


}

void Objet::SetTaille(sf::Vector2f Taille)
{
    m_Taille=Taille;
    update();
}

void Objet::SetPosition(sf::Vector2f Position)
{
    m_Position=Position;
    update();
}

void Objet::SetScale(sf::Vector2f Scale)
{
    if(Scale.x >0.000001 || Scale.x < -0.000001 || Scale.y >0.000001 || Scale.y <-0.000001)
    m_Scale=Scale;
}

void Objet::SetScale(float Scale)
{
    if(Scale >0.000001 || Scale < -0.000001)
    m_Scale=Vector2f(Scale,Scale);
}

void Objet::Center(bool center)
{
    m_Center=center;
}

void Objet::Draw(RenderWindow *window)
{
    if(m_IsImageFond)
    SetTaille(Vector2f(m_ImageFond->getSize()));

    SetTaille(Vector2f(m_Taille.x*m_Scale.x,m_Taille.y*m_Scale.y));

    if(m_Center)
    SetPosition(Vector2f(window->getView().getSize().x/2-m_Taille.x/2+m_Position.x,window->getView().getSize().y/2-m_Taille.y/2+m_Position.y));

    if(m_IsImageFond)
    window->draw(m_Fond, m_ImageFond);
    else
    window->draw(m_Fond);

    if(m_Center)
    SetPosition(Vector2f(-(window->getView().getSize().x/2-m_Taille.x/2)+m_Position.x,-(window->getView().getSize().y/2-m_Taille.y/2)+m_Position.y));

    SetTaille(Vector2f(m_Taille.x/m_Scale.x,m_Taille.y/m_Scale.y));
}

void Objet::update()
{
    m_Fond[0].position = Vector2f(m_Position.x, m_Position.y);
    m_Fond[1].position = Vector2f(m_Position.x+m_Taille.x, m_Position.y);
    m_Fond[2].position = Vector2f(m_Position.x+m_Taille.x, m_Position.y+m_Taille.y);
    m_Fond[3].position = Vector2f(m_Position.x, m_Position.y+m_Taille.y);

    if(m_IsImageFond)
    {
        m_Fond[0].texCoords= Vector2f(0,0);
        m_Fond[1].texCoords= Vector2f(m_ImageFond->getSize().x,0);
        m_Fond[2].texCoords= Vector2f(m_ImageFond->getSize().x,m_ImageFond->getSize().y);
        m_Fond[3].texCoords= Vector2f(0,m_ImageFond->getSize().y);
    }
}

 
//Page.h
class Page : public Objet
{
    public:
        Page();

        void newObjet(Objet obj);
        void lraw(sf::RenderWindow *window);
    protected:
    private:
        std::vector< Objet > m_Objets;

};
// page.cpp

using namespace sf;
using namespace std;

Page::Page():Objet()
{

}

void Page::newObjet(Objet obj)
{
    m_Objets.push_back(obj);
}

void Page::Draw(RenderWindow *window)
{
    Draw(window);
    if(m_Objets.size()!=0)
    {
        for(int i(0);i<=m_Objets.size();i++)
        {
            m_Objets[i].Objet::Draw(window);
        }
    }
}
 

Merci d'avance, votre aide serait vraiment indispensable, je ne trouve vraiment pas

Pages: [1]