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

Auteur Sujet: Dessiner une ligne d’une texture  (Lu 1633 fois)

0 Membres et 1 Invité sur ce sujet

Vinzgore

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
    • E-mail
Dessiner une ligne d’une texture
« 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 ! :)

G.

  • Hero Member
  • *****
  • Messages: 1592
    • Voir le profil
Re : Dessiner une ligne d’une texture
« Réponse #1 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 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.
« Modifié: Octobre 10, 2013, 08:09:37 pm par G. »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Dessiner une ligne d’une texture
« Réponse #2 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.
Laurent Gomila - SFML developer