Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: Vinzgore le Octobre 10, 2013, 07:33:34 pm

Titre: Dessiner une ligne d’une texture
Posté par: Vinzgore le Octobre 10, 2013, 07:33:34 pm
Bonjour à tous !

Je fais actuellement un moteur de raycasting pour un projet scolaire de bac. Le moteur est actuellement fonctionnel non-texturé, et texturé. Cependant, je dessine mes textures dans la fenêtre pixel par pixel, ce qui est assez peu performant.
Aussi je cherche à savoir s’il est possible de dessiner une ligne verticale d’une texture plutôt que de copier la couleur du pixel correspondant, pour ensuite l’afficher.
(Il faudrait aussi que je puisse redimensionner la ligne de texture ainsi sélectionnée, mais je pense être capable de le faire)

Merci bien ! :)
Titre: Re : Dessiner une ligne d’une texture
Posté par: G. le Octobre 10, 2013, 08:07:27 pm
Je ne sais pas trop si ça correspond à ce que tu veux, je ne sais pas comment fonctionne le raycasting.
Tu as ta sf::Texture, tu la fournis à un (ou des) sf::Sprite et tu affectes un TextureRect (http://www.sfml-dev.org/documentation/2.1/classsf_1_1Sprite.php#a3fefec419a4e6a90c0fd54c793d82ec2) d'un pixel (ou plus) de largeur à ce sprite, et voilà t'as une ligne verticale d'un pixel de largeur que tu peux dessiner n'importe où sur l'écran et redimensionner en modifiant le scale du sprite.
Titre: Re : Dessiner une ligne d’une texture
Posté par: Laurent le Octobre 10, 2013, 09:21:55 pm
void drawTexturedLine(sf::Vector2f p1, sf::Vector2f p2, sf::Vector2u tc1, sf;;Vector2y tc2, sf::RenderTarget& target, sf::Texture& texture);
{
    sf::Vertex line[] =
    {
        sf::Vertex(p1, tc1),
        sf::Vertex(p2, tc2)
    };

    target.draw(line, 2, sf::Lines, &texture);
}

C'est juste pour l'idée. Si tu as plein de lignes statique qui utilisent la même texture, regroupe les dans un vertex array.