Flêchistique(explosion du FPS voir dernier post)

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

@beauregard
*MemoireID_numero_sprite = AllocateMemory(10200);
vx de -50 à 50 avec vx=0 exclu => 100 valeurs
vy de -50 à 50 =>101 valeurs
100*101=10100 couples (vx,vy) possibles
Exemple : (-50,-50);(-50,49);......;(10,4);...etc

Comme ce sont des bytes, 10100*1 pour l'espace mémoire.


J'ai mis 10200 pour la sécurité !

Pour l'index du couple (vx+50)*100+(vy+50), le "+50" décale vx et vy pour éviter les valeurs négatives.
couple (-50,-50)=>index 0
couple (-50,-49) => index 1
couple (-12,-32) => index 3818
couple (50,50) =>index 10100

Je vois que j'ai oublié un +50 pour vy dans les codes précédents (:oops: faut que je corrige) .

Les pros du AllocateMemory(), n'hésitez pas à me corriger si je raconte n'importe quoi :lol: .
Ca marche quand même, Purebasic est magique !

Quant à la quantité, c'était le but initial ! En fait, les premiers codes avait un FPS inférieur à 3 sur certains pentium IV du lycée qui datent de juin 2000! Le dernier code tourne à FPS = 40 avec le même nombre de flêches (1200) 8O !
Pour la qualité, ça peut aller avec la quantité si je précalcule plus de sprites flêche 2D en rotation. Ici, j'ai pris tous les 15° c'est à dire 24 sprites. J'aurais pû prendre 360 sprites !

Le fait de passer par grabsprite() pour récuperer les sprites 3D
Image
m'aurait obligé avec plus de flêches à découper en lignes
et en colonnes le sprite capturé. Ce n'était pas la priorité, mais ça marche sans problème !
On peut donc avoir la qualité ET la quantité!
A la place du grabsprite(), j'avais pensé à mettre directement une planche de sprites mais je préfère les codes sans fichiers joints !
;Delay(1)
Je croyais qu'il fallait ménager le pauvre processeur ?!

Hasta la vista!
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Huitbit a écrit :
;Delay(1)
Je croyais qu'il fallait ménager le pauvre processeur ?!
Dès qu'il s'agit d'opération graphique nécessitant d'afficher un grand nombre d'images, et bien il faut prendre toutes les ressources( et donc ne pas utiliser cette commande). Voilà pour la théorie, pour la pratique, heu, je pense que Fred a encore amélioré les choses avec la 4.20


-> si tu utilise un grand nombre de sprites3D en utilisant leurs transparences, les sprites affichés avant( servant à représenter un ciel en dégradé par exemple) doivent également être des sprites3D( car les sprites 2D peuvent être la cause d'une chute de fps)
Répondre