f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 26 févr. 2007 à 07:50
OH!
premiere Demo de delphifr! c'est rare...
et un gros lol :
For i := 1 to Ball_Count do Begin
With DXSpriteEngine.Engine do Begin
Items[i].X := 320 + Sin( ((Theta/BALL_COUNT)*i+Theta) * PI / 180 ) * (Cos(Theta*Pi/180)*Cos(Theta*PI/180)*160);
Items[i].Y := 240 + Cos( ((Theta/BALL_COUNT)*i+Theta) * PI / 180 ) * (Sin(Theta*Pi/180)*160);
End;
End;
elle prend combien de cycle CPU ceele ci .... mmm ...
voila comment la rendre plus rapide (4x moins de temps~):
var TDTR,TBC,
SFT,CFT,
ST,CT: extended;
const
DTR = Pi/180;
begin
...
with DXSpriteEngine.Engine.Items[0] do
begin
X := CT*ST*300;
Y := ST*100;
end;
ST := ST * 160;
CT := CT * CT * 160;
For i := 1 to ball_count do
With DXSpriteEngine.Engine.Items[i] do
Begin
SinCos( (TBC*i+Theta) * DTR, SFT, CFT);
X := 320 + SFT * CT;
Y := 240 + CFT * ST;
End;
26 févr. 2007 à 07:50
premiere Demo de delphifr! c'est rare...
et un gros lol :
For i := 1 to Ball_Count do Begin
With DXSpriteEngine.Engine do Begin
Items[i].X := 320 + Sin( ((Theta/BALL_COUNT)*i+Theta) * PI / 180 ) * (Cos(Theta*Pi/180)*Cos(Theta*PI/180)*160);
Items[i].Y := 240 + Cos( ((Theta/BALL_COUNT)*i+Theta) * PI / 180 ) * (Sin(Theta*Pi/180)*160);
End;
End;
elle prend combien de cycle CPU ceele ci .... mmm ...
voila comment la rendre plus rapide (4x moins de temps~):
var TDTR,TBC,
SFT,CFT,
ST,CT: extended;
const
DTR = Pi/180;
begin
...
TBC := Theta/ball_count;
TDTR := Theta*DTR;
SinCos(TDTR, ST, CT);
with DXSpriteEngine.Engine.Items[0] do
begin
X := CT*ST*300;
Y := ST*100;
end;
ST := ST * 160;
CT := CT * CT * 160;
For i := 1 to ball_count do
With DXSpriteEngine.Engine.Items[i] do
Begin
SinCos( (TBC*i+Theta) * DTR, SFT, CFT);
X := 320 + SFT * CT;
Y := 240 + CFT * ST;
End;
...
End;
avec ça le gains de FPS devrait etre pas mal.