Bonjour,
Je "travaille" actuellement sur un petit projet perso et je viens de me confronter à un problème assez chiant.
J'essaie de faire déplacer un personnage sur une map 2D vue de côté que je modélise par un tableau2D d'int. Chaque valeur est associée à un bloc différent (0->air ; 1->terre ; 2->pierre etc...)
J'ai donc initialisé un tableau avec les sprites de chaque bloc dans le bon ordre et l'ai nommé liste_bloc
Et j'affiche cette map en la parcourant avec une double boucle en déplaçant les blocs directement dans la liste_bloc et en les dessinant, ce qui donne ceci :
liste_bloc[carte[ i ][j]].setPosition(Vector2f(i*tailleBloc, j*tailleBloc));
window.draw(liste_bloc[carte[ i ][j]]);
Les deux boucles imbriquées font environ maximum 250 000 fois ces 2 commandes (480 blocs de largeur * 480 blocs de hauteur) (par frame, soit *60 par seconde)
Je me rend bien compte que c'est un total non négligeable d'instructions mais je ne peux pas faire autrement. Si ?
En soit je pourrais réduire le nombre d'appel de ces fonctions quasiment par 2 mais le fait est que si avec aucune fonctionnalité mon jeu rame ainsi j'ai peur de ce que ça va devenir .. (je réduirais surement de toute manière cet appel encore plus car la vision du jeu est trop large mais la question m'intéresse quand même)
Je voudrais donc savoir s'il est possible de faire autrement pour l'affichage d'une map 2D (plus optimisée) ou peut être est-ce la fonction draw qui n'est pas faite pour être appelé autant de fois ?
En tant que débutant dans le domaine je cherche conseil et j'espère que vous pourrez m'aider. Merci d'avance pour votre aide
ps: j'utilise Code::Blocks et C++, même si je ne pense pas qu'SFML fonctionne avec autre chose que C++, je préfère préciser