Performances?
Performances?
J'ai un pc assez puissant (Q6600 + 8800 GTX) et pure me fait très peur niveau performances:
Si j'affiche une image en PNG 32 bits de 342*480 dans un écran (fullscreen) en 640*480, et une autre image contenant des pixels transparents (toujours en png et de la même taille) je n'ai plus que 32 images secondes, et un core de mon processeur se retrouve utilisé à 100%.
C'est normal???? Comment éviter cette horreur?
Merci d'avance.
Si j'affiche une image en PNG 32 bits de 342*480 dans un écran (fullscreen) en 640*480, et une autre image contenant des pixels transparents (toujours en png et de la même taille) je n'ai plus que 32 images secondes, et un core de mon processeur se retrouve utilisé à 100%.
C'est normal???? Comment éviter cette horreur?
Merci d'avance.
Ma connexion est catastrophique.
Enfin bon, sur mon pc, avec ce code qui n'affiche rien, je n'ai "que" 1900 fps
pendant qu'un exemple comme celui là (trouvé sur le forum US) en affiche 3000.
Alors quoi, c'est ma méthode pour compter les FPS (pompé sur Dobro) qui n'est pas bonne?
Enfin bon, sur mon pc, avec ce code qui n'affiche rien, je n'ai "que" 1900 fps
Code : Tout sélectionner
InitSprite()
InitSound()
InitKeyboard()
OpenScreen(640,480,32,"test")
Repeat
FlipBuffers(0)
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
If Val(FormatDate("%ss", Date()))=sek
fps+1
Else
FPS$=Str(fps)
fps=0
sek=Val(FormatDate("%ss", Date()))
EndIf
StartDrawing(ScreenOutput())
DrawText(1,1,FPS$)
StopDrawing()
ForEver
Alors quoi, c'est ma méthode pour compter les FPS (pompé sur Dobro) qui n'est pas bonne?
Rien que ton drawtext te bouffe un max de fps. J'ai déjà parlé à des gars qui travaillaient en Opengl qui se plaignaient aussi de la lenteur de l'affichage du texte (pour leur debugage), sans même imaginer ce qu'il y a derrière.
Je rappelle qu'une police TTF ou Postscript est composée de vecteurs, que chaque lettre est DESSINEE à chaque appel (tracé de lignes+remplissage+masquage), que même si c'est fait de façon transparente par le système, certaines polices sont complexes et que c'est une opération LOURDE!
Aussi on préférera utiliser une police BITMAP ou dessiner ses caractères soi-même. Bien sûr, en 2008 on est en droit de s'attendre à mieux, mais dans un jeu, il faut optimiser...
Sinon, pour ton calcul de FPS, cherche un peu, il y a mille exemples sur les forums.
Je rappelle qu'une police TTF ou Postscript est composée de vecteurs, que chaque lettre est DESSINEE à chaque appel (tracé de lignes+remplissage+masquage), que même si c'est fait de façon transparente par le système, certaines polices sont complexes et que c'est une opération LOURDE!
Aussi on préférera utiliser une police BITMAP ou dessiner ses caractères soi-même. Bien sûr, en 2008 on est en droit de s'attendre à mieux, mais dans un jeu, il faut optimiser...
Sinon, pour ton calcul de FPS, cherche un peu, il y a mille exemples sur les forums.
je ne pensais pas qu'afficher du texte était un travail lourd @_@ je débute totalement dans l'affichage ^^;
Une fois remplacé ma fonction fps par une plus performante, j'atteind 19k FPS écran vide. Ouf.
Par contre, l'affichage de quelques sprites fixes(qui appartiennent à un contact qui voudrait éviter que je ne les diffuse) fait tomber très très vite l'affichage.
Je me retrouve avec une autre question:
comment utiliser correctement startspecialfx()?
Je voudrais afficher des effets spéciaux par dessus une image déjà déssinée, mais starspecialfx() doit être appelé avant tout effet:
Une fois remplacé ma fonction fps par une plus performante, j'atteind 19k FPS écran vide. Ouf.
Par contre, l'affichage de quelques sprites fixes(qui appartiennent à un contact qui voudrait éviter que je ne les diffuse) fait tomber très très vite l'affichage.
Je me retrouve avec une autre question:
comment utiliser correctement startspecialfx()?
Je voudrais afficher des effets spéciaux par dessus une image déjà déssinée, mais starspecialfx() doit être appelé avant tout effet:
Standard sprites should be displayed after StopSpecialFX() to use the hardware acceleration, as usual. If you are using ClearScreen(), place it inside the StartSpecialFX() : ... : StopSpecialFX() block. The current display is not copied into the buffer (would be too slow), so be sure to don't call any display functions before calling StartSpecialFX() as they will be ignored.
Malheureusement Sprite3DBlendingMode() n'est pas supporté par le subsystem DX9. (c'est DX9 qui ne gère pas cette fonction)djes a écrit :Franchement, si tu veux de la rapidité, évite les specialfx. On peut faire de jolies choses, mais ça bouffe un max de temps processeur. Essaye plutôt de travailler avec plus de sprites3d, en utilisant Sprite3DBlendingMode(). Tu verras que c'est beaucoup plus efficace
Sinon le subsystem directX9 est plus rapide selon les tests que j'ai pu faire, d'autres disent que c'est plus lent, ça doit dépendre des fonctions utilisées ?
Par contre pour l'instant c'est inutilisable, faut attendre les prochaines beta de la 4.20
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Oui, je suis en standby aussi.comtois a écrit :Malheureusement Sprite3DBlendingMode() n'est pas supporté par le subsystem DX9. (c'est DX9 qui ne gère pas cette fonction)djes a écrit :Franchement, si tu veux de la rapidité, évite les specialfx. On peut faire de jolies choses, mais ça bouffe un max de temps processeur. Essaye plutôt de travailler avec plus de sprites3d, en utilisant Sprite3DBlendingMode(). Tu verras que c'est beaucoup plus efficace
Sinon le subsystem directX9 est plus rapide selon les tests que j'ai pu faire, d'autres disent que c'est plus lent, ça doit dépendre des fonctions utilisées ?
Par contre pour l'instant c'est inutilisable, faut attendre les prochaines beta de la 4.20
T'es prêt pour les awards? http://darwinawards.com/darwin/darwin2007-03.htmlposhu a écrit :Oki, merci pour l'aide, j'y retourne.
/me met son masque
/me plonge
/me nage vers le fond
/me s'aperçoit qu'il a pas pris de bouteille d'oxygène!
/me meurt noyé comme un con.
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Code : Tout sélectionner
FlipBuffers(60)

sprite classique + sprite3D
exemple avec un shump:
affichage vaisseau du joueur: sprite classique
affichage nuage: sprite3D
le blème avec le mode graphique, c'est que sur un écran wide(16/10ème), l'image est étirée, ce qui déforme l'oeuvre originale.
Le mode fenêtré est des plus fluide, à la condition de ne pas mettre de delay:http://www.purebasic.fr/french/viewtopi ... 52&start=0
Dernière modification par beauregard le lun. 14/janv./2008 13:58, modifié 1 fois.
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Ca dépend; ça permet de combiner des effets (de transparence) sur plusieurs sprites. Rien de mieux pour faire du feu par exemple.beauregard a écrit :heu, si vous pouviez expliquer dans quel but précis vous utilisez cette commande de haute volée( jeux ou application 3D) ?comtois a écrit :Essaye plutôt de travailler avec plus de sprites3d, en utilisant Sprite3DBlendingMode().