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

Auteur Sujet: Fonctionnement des sf::view  (Lu 3325 fois)

0 Membres et 1 Invité sur ce sujet

r4gTime

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
Fonctionnement des sf::view
« le: Mai 20, 2020, 06:30:55 pm »
Bonjour, je n'ai pas bien compris le fonctionnement des View.

Jusqu'ici, je dessinais tout directement dans ma fenêtre.

Admettons que j'ai un jeu de ce type, avec un GUI, une map et une mini map :


Est-ce que je dois dessiner la map loin (par exemple en x = 1000, y = 1000) pour ne pas qu'elle s'affiche dans ma window, puis créer des views qui afficheront la map et que je placerai dans ma window ?

Que dois-je dessiner dans les view ? dans la window ?

Existe-t-il un petit code exemple pour mieux comprendre ?


Merci beaucoup pour votre aide !

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re: Fonctionnement des sf::view
« Réponse #1 le: Mai 20, 2020, 11:35:59 pm »
Non, pas besoin de dessiner ta minimap loin.

Là tu dessinerais la partie gameplay sur une vue que tu déplaces (move, setCenter ou reset) quand tu veux scroller, et le GUI sur une autre vue qui bouge pas.
Ensuite pour la minimap ça dépend de comment tu la fais. Tu peux la dessiner directement sur la même vue que le GUI si c'est des toutes petites tiles. Sinon si tu utilises les mêmes tiles que pour le gameplay, tu peux redessiner  toute la map sur une autre vue de la taille de la map, et tu cadres cette vue au bon endroit dans ton GUI avec le viewport approprié.

T'as des exemples sur le wiki https://github.com/SFML/SFML/wiki/Tutorial%3A-Using-View

en gros:
vueMinimap.setViewport(le carré en haut à droite)
setView(vueJeu)
draw(jeu)
setView(vueGui)
draw(gui)
setView(vueMinimap)
draw(minimap)

C'est une façon possible de faire.

r4gTime

  • Newbie
  • *
  • Messages: 14
    • Voir le profil
    • E-mail
Re: Fonctionnement des sf::view
« Réponse #2 le: Mai 21, 2020, 02:52:55 pm »
Merci beaucoup pour les infos, c’est beaucoup plus clair.

En fait je pensais qu'il fallait tout draw sur un monde virtuel 2D puis ajouter des vues comme des caméras, mais d'après ce que j'ai compris, il faut redessiner dans chaque vue ce que l'on souhaite montrer.

Exemple : Je pensais qu'on dessinait une fois la map, puis on affichait 2 vues différentes (map et minimap) du même endroit, mais en fait il faut draw une fois pour map, puis encore une fois pour minimap.