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

Auteur Sujet: Polygone avec SFML2.0 ?  (Lu 1935 fois)

0 Membres et 1 Invité sur ce sujet

jokoon

  • Newbie
  • *
  • Messages: 35
    • Voir le profil
Polygone avec SFML2.0 ?
« le: Juillet 27, 2012, 05:06:06 pm »
J'aimerais juste dessiner une serie de lignes, Shape est abstraite dans la 2.0 contrairement a la 1.6, donc j'utilise ConvexShape, je voulais savoir si cette classe est bien sensée fonctionner comme prévu dans la 2.0RC, ou s'il n'y a pas une autre solution.

Voici mon code:

#define FOR(a) for(size_t i = 0; i < a; ++i)

struct shape_util
{
    sf::ConvexShape Polygon;
    //sf::Shape Polygon;
    sf::RenderWindow * window;

    map<string, sf::Sprite> sprites;
    map<string, sf::Texture> textures;

    void init()
    {
        window = new sf::RenderWindow (sf::VideoMode(800, 600), "procedural shape utility");

        window->setMouseCursorVisible(false);


        textures["cursor"] = sf::Texture();
        textures["bg"] = sf::Texture();
        sprites["cursor"] = sf::Sprite();
        sprites["bg"] = sf::Sprite();

        textures["bg"].loadFromFile("grid.png");
        textures["cursor"].loadFromFile("cursor.png");
        sprites["bg"].setTexture(textures["bg"]);
        sprites["cursor"].setTexture(textures["cursor"]);
        Polygon.setFillColor(sf::Color(0,200,0, 255));

    }
    ~shape_util() { delete window; }
    void handle_loop()
    {
        while (window->isOpen())
        {
            sf::Event event;
            while (window->pollEvent(event))
            {
                if (event.type == sf::Event::Closed)// || event.type==sf::Event::KeyPressed)
                    window->close();
                if(event.type == sf::Event::KeyPressed)// || event.type == sf::Event::KeyReleased)
                    switch(event.key.code)
                    {
                    case Keyboard::Escape:
                        window->close();
                        break;
                }
                if(event.type == sf::Event::MouseMoved)
                {
                    sprites["cursor"].setPosition(event.mouseMove.x, event.mouseMove.y);
                    window->draw(Polygon);
                }
                if(event.type == sf::Event::MouseButtonPressed)
                {
                    Polygon.setPointCount(Polygon.getPointCount()+1);
                    Vector2f v(float(event.mouseMove.x), float(event.mouseMove.y));
                    Polygon.setPoint(Polygon.getPointCount()-1, v);
                    //Polygon.set
                    //window->draw(Polygon);
                   
                    size_t u = Polygon.getPointCount();
                    cout << "point begin" << endl;
                    FOR(u)
                        cout << "    point " << i << ": " <<
                            Polygon.getPoint(i).x << " " << Polygon.getPoint(i).y << endl;
                    cout << "point end" << endl;

                }
                if(event.type == sf::Event::MouseButtonReleased)
                {
                   
                }
                if(event.type == sf::Event::KeyPressed) {}
                if(event.type == sf::Event::KeyReleased) {}
               
                   
                window->clear();
                window->draw(sprites["bg"]);

                window->draw(Polygon);


                window->draw(sprites["cursor"]);
                window->display();

            }
        }
    }

};
int _tmain(int argc, _TCHAR* argv[])
{

    shape_util dada;
    dada.init();
    dada.handle_loop();
}

Mon code compile et charge les fichiers tout bien, je n'arrive pas a voir le polygone dessiné...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Polygone avec SFML2.0 ?
« Réponse #1 le: Juillet 28, 2012, 09:54:24 am »
Tu aurais quelque chose de plus minimal ? Sans les sprites, textures, évènements inutiles, etc ?
Laurent Gomila - SFML developer

 

anything