Mais il me parait logique que clipsprite soit plus lent que grabsprite, Enfin , je m'en vais faire un test.

j'ai refais le test avec un sprite de 100*100, j'ai un ralentissement à partir de 1800 sprites , sinon le FPS ne bronche pas, il reste à 60.fly a écrit :Peut t'étre que mon ralentissement est normal et que purebasic n'est pas capable d'afficher 1000 sprite(environ 100*100 pixel) à un fps de 60.Mais cela m'étonne tout de même.
Code : Tout sélectionner
InitSprite()
InitKeyboard()
InitMouse()
InitSound()
InitSprite3D()
OpenScreen(1280,1024,32,"essai")
UsePNGImageDecoder()
UseJPEGImageDecoder()
;LoadSprite(0,"data\porte etendart.png")
CreateSprite(0,100,100)
StartDrawing(SpriteOutput(0))
Circle(50,50,50,$123456)
StopDrawing()
Structure terrain_1
x.f
y.f
EndStructure
Global NewList terrain.terrain_1()
Declare principal()
Repeat
FlipBuffers()
ClearScreen(0)
ExamineKeyboard()
If Second < ElapsedMilliseconds()
Second = ElapsedMilliseconds()+1000
fps = Frame_Counter
Frame_Counter = 0
Else
Frame_Counter + 1
EndIf
; création des procedures
principal()
StartDrawing(ScreenOutput())
DrawText(0,0,"FPS : "+Str(fps) + " - Nb Sprites : " + Str(CountList(terrain())))
StopDrawing()
Until KeyboardPushed(#PB_Key_Escape)
Procedure principal()
If CountList(terrain())<2000
AddElement(terrain())
terrain()\x=Random(1280)
terrain()\y=Random(1024)
EndIf
ForEach terrain()
DisplayTransparentSprite(0,terrain()\x,terrain()\y)
Next
EndProcedure
Code : Tout sélectionner
InitSprite()
InitKeyboard()
InitMouse()
InitSound()
InitSprite3D()
OpenScreen(1280,1024,32,"essai")
UsePNGImageDecoder()
UseJPEGImageDecoder()
;LoadSprite(0,"data\porte etendart.png")
CreateSprite(0,100,100,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(0))
Circle(50,50,50,$123456)
StopDrawing()
CreateSprite3D(0,0)
Structure terrain_1
x.f
y.f
EndStructure
Global NewList terrain.terrain_1()
Declare principal()
Repeat
FlipBuffers()
ClearScreen(0)
ExamineKeyboard()
If Second < ElapsedMilliseconds()
Second = ElapsedMilliseconds()+1000
fps = Frame_Counter
Frame_Counter = 0
Else
Frame_Counter + 1
EndIf
; création des procedures
principal()
StartDrawing(ScreenOutput())
DrawText(0,0,"FPS : "+Str(fps) + " - Nb Sprites : " + Str(CountList(terrain())))
StopDrawing()
Until KeyboardPushed(#PB_Key_Escape)
Procedure principal()
If CountList(terrain())<4000
AddElement(terrain())
terrain()\x=Random(1280)
terrain()\y=Random(1024)
EndIf
Start3D()
ForEach terrain()
DisplaySprite3D(0,terrain()\x,terrain()\y)
Next
Stop3D()
EndProcedure
Code : Tout sélectionner
InitSprite()
InitKeyboard()
InitMouse()
InitSound()
InitSprite3D()
OpenScreen(1440,900,32,"essai")
UsePNGImageDecoder()
UseJPEGImageDecoder()
LoadSprite(0,"porte etendart.png",#PB_Sprite_Texture)
CreateSprite3D(0,0)
Structure terrain_1
x.f
y.f
EndStructure
Global NewList terrain.terrain_1()
Global terrain.terrain_1
Declare principal()
Repeat
FlipBuffers()
ClearScreen(0)
ExamineKeyboard()
If Second < ElapsedMilliseconds()
Second = ElapsedMilliseconds()+1000
fps = Frame_Counter
Frame_Counter = 0
Else
Frame_Counter + 1
EndIf
principal()
StartDrawing(ScreenOutput())
DrawText(0,0,"FPS : "+Str(fps))
DrawText(200,0,StrF(terrain\x))
StopDrawing()
; création des procedures
Until KeyboardPushed(#PB_Key_Escape)
Procedure principal()
If CountList(terrain())<2000
terrain\x=terrain\x+1
AddElement(terrain())
terrain()\x=Random(1440)
terrain()\y=Random(900)
EndIf
Start3D()
ForEach terrain()
DisplaySprite3D(0,terrain()\x,terrain()\y)
Next
Stop3D()
EndProcedure