Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - r4gTime

Pages: [1]
1
Graphique / Re: [RenderTexture] Optimisation de rendu maps
« le: Mars 03, 2021, 12:38:07 am »
J'ai trouvé la réponse alors je la poste ici pour ceux que ça intéresse (comme je ne l'ai pas vue ailleurs, peut-être que ça peut servir) :

Il suffit en fait de stocker l'image dans... une texture tout simplement.

Vous dessinez la map entière dans un RenderTexture et vous la stockez dans une Texture.

Votre boucle d'affichage ne fait que draw les 4 ou 5 textures qui constituent vos couches d'affichage (terrain, brouillard, ressources, unités...)

Quand une couche doit changer (découverte du brouillard par exemple), vous redessinez l'image dans un Rendertexture et vous la stockez à nouveau. On a un temps de rendu inférieur à la milliseconde :)

2
Graphique / [RenderTexture] Optimisation de rendu maps
« le: Mars 02, 2021, 06:37:46 pm »
Bonjour, j'aimerais solliciter votre aide pour optimiser correctement l'affichage d'une map.
Celle-ci fait 6400*6400px, avec grosso modo trois couches à afficher :
  • Le terrain
  • Les ressources et aménagements
  • Les unités
Le rendu classique que j'utilise (draw de toutes les tuiles, bordures, ressources, unités à chaque frame) ne fonctionne pas très bien.
Même en optimisant les rendus (affichage uniquement si visible, etc..), quand on dézoome, on passe vite sous la barre des 300fps sur ma machine, avec parfois des crash sur les machines un peu moins puissantes type ordinateur portable.

J'ai tenté une méthode qui en terme d'optimisation fps donne de très bon résultats, mais j'obtiens des bugs de mémoire.
En gros, je crée un RenderTexture de 6400x6400 pour chaque couche (terrain, fog, unités...) que je mets à jour seulement quand il le faut (unité qui bouge, etc..).
Problème, j'obtiens des messages d'erreur OpenGL : OUT_OF_MEMORY m'indiquant que le rendu est impossible. Pourtant le jeu s'affiche bel et bien, à +500 fps, malheureusement j'obtiens des scintillements et pas mal d'artéfacts graphiques.

Pour résoudre ces problèmes de mémoire, j'ai tenté de créer plutôt des images 6400x6400, mais j'obtiens un crash systématique avec un message d'erreur d'allocation mémoire avec le code suivant :
for(int i = 0; i < 4; i++) mapImage[i].create(6400,6400);

Je suis assez étonné de ne pas pouvoir créer 4 images ou textures de 6400px de large, est-ce normal ?

Dernière question d'optimisation : J'ai lu un peu partout sur ce forum que changer de texture prenait pas mal de temps.
Dans ce cas, lequel de ces deux codes est le plus optimisé en terme de temps d'affichage ?
Dessiner les cases une par une en changeant à chaque fois de texture ou dessiner texture par texture ?
for(int x = 0; x < 100; x ++) {
for(int y = 0; y < 100 ; y++) {
sprite.setTexture(GetTexture(x,y));
window.draw(sprite);
}
}
 
ou bien :
for(int i = 0; i < NumberOfTexture; i ++) {
sprite.setTexture(GetTexture(i));
for(int x = 0; x < 100; x ++) {
for(int y = 0; y < 100 ; y++) {
if(CheckBonneTexture(i,x,y)window.draw(sprite);
}
}
}
 

Merci d'avance pour votre aide et vos conseils :)



3
Fenêtrage / Re: Joysticks
« le: Mai 21, 2020, 05:11:39 pm »
Merci pour ta réponse, effectivement les gâchettes sont analogiques je n'en avais aucune idée mais je trouve ça super, ça ouvre des tonnes de possibilités !

4
Fenêtrage / Re: Joysticks
« le: Mai 21, 2020, 02:56:24 pm »
Je me permets d'en profiter pour poser une question liée aux manettes : La librairie ne semble pas prendre en compte toutes les touches de manette XBOX (il manque les gachettes LT et RT, ainsi que le joystick droit). Est-ce qu'il existe une librairie annexe compatible qui puisse mieux gérer les manettes ou quelque chose du genre ?

5
Fenêtrage / Re: Fonctionnement des sf::view
« 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.

6
Fenêtrage / 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 !

7
Réseau / Mon packet reçoit toujours la même valeur
« le: Avril 16, 2020, 11:59:51 pm »
Bonjour,

J'ai un petit souci avec les packets : Quand j'envoie une valeur depuis le client vers le serveur, il reçoit la bonne valeur, mais quand je lui envoie une deuxième valeur, il reçoit toujours la première valeur.

Exemple en image en fichier joint : La console de droite teste la valeur avant de l'envoyer : 223, puis 70.
Mais le serveur (console de gauche) reçoit 223, puis de nouveau 223...

Avez-vous une idée d'où peut venir le problème ?

Merci d'avance pour votre aide.


EDIT : Problème résolu en lisant le topic suivant :https://fr.sfml-dev.org/forums/index.php?topic=22676.0
qui avait le même problème que moi ...

Merci à Laurent pour sa réponse : il faut réinitialiser le packet à envoyer avec un packet.clear()

Pages: [1]