Question technique sur grabsprite()
Publié : dim. 12/avr./2009 19:30
Bonjour et joyeuses Pâques !
J'ai voulu améliorer un code que j'avais fait dans un petit tutoriel pour débutants (c'est pour cela qu'il n' y a pas de structures, ...etc).
Par rapport au code de base, il y a un grabsprite, un zoom et une rotation en plus.
Je m'attendais à ce que l'UC souffre un peu.
Au final, calme plat, nada, nothing, ras...(moins de 10% en ressources CPU) !
Questions :
Grabsprite() n'a pas l'air très gourmand en ressources
Quelqu'un peut-il me le confirmer ? Si c'est le cas, c'est une excellente nouvelle ! Moi, je l'adopte
!
On parle peu de cette fonction, y a-t-il une alternative plus efficace ?
Image à enregistrer dans le même dossier que le code

Hasta la vista !
J'ai voulu améliorer un code que j'avais fait dans un petit tutoriel pour débutants (c'est pour cela qu'il n' y a pas de structures, ...etc).
Par rapport au code de base, il y a un grabsprite, un zoom et une rotation en plus.
Je m'attendais à ce que l'UC souffre un peu.
Au final, calme plat, nada, nothing, ras...(moins de 10% en ressources CPU) !

Questions :
Grabsprite() n'a pas l'air très gourmand en ressources
Quelqu'un peut-il me le confirmer ? Si c'est le cas, c'est une excellente nouvelle ! Moi, je l'adopte

On parle peu de cette fonction, y a-t-il une alternative plus efficace ?
Image à enregistrer dans le même dossier que le code
Code : Tout sélectionner
;auteur Huitbit
; test fonction grabsprite()
;PureBasic 4.30 (Windows - x86)
#largeur_fenetre=400
#hauteur_fenetre=400
#largeur_ecran=400
#hauteur_ecran=400
Enumeration
#sprite_decor
#sprite_lupin
#sprite_grab
#sprite_grab_3D
EndEnumeration
InitSprite()
InitSprite3D()
OpenWindow(0,0,0,#largeur_fenetre,#hauteur_fenetre,"JEUDI 6H59",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,#largeur_ecran,#hauteur_ecran,1,0,0)
;on crée un sprite décor
CreateSprite(#sprite_decor,#largeur_ecran,#hauteur_ecran)
StartDrawing(SpriteOutput(#sprite_decor))
Box(0,0,#largeur_ecran,#hauteur_ecran*0.5,RGB(0,136,255))
For i=180 To 0 Step -20
Box(0,#hauteur_ecran*0.5+i,#largeur_ecran,20,RGB(0,255-i,0))
Next i
StopDrawing()
;on charge le sprite lupin
UsePNGImageDecoder()
LoadSprite(#sprite_lupin,"lupin.png",#PB_Sprite_Texture)
;-BOUCLE PRINCIPALE
Repeat
;gestion de l'affichage
FlipBuffers()
DisplaySprite(#sprite_decor,0,0)
If ElapsedMilliseconds()-date_affichage>50
date_affichage=ElapsedMilliseconds()
ClipSprite(#sprite_lupin,numero_image*33,0,33,59)
numero_image=numero_image+1
If numero_image>5
numero_image=0
EndIf
EndIf
DisplaySprite(#sprite_lupin,184,141)
;-saisie de l'écran
GrabSprite(#sprite_grab,0,0,#largeur_ecran,#hauteur_ecran,#PB_Sprite_Texture)
CreateSprite3D(#sprite_grab_3D,#sprite_grab)
Start3D()
Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)
ZoomSprite3D(#sprite_grab_3D,#largeur_ecran*1.41,#hauteur_ecran*1.41)
angle=angle+1
If angle>360
angle=0
EndIf
RotateSprite3D(#sprite_grab_3D,angle,0)
DisplaySprite3D(#sprite_grab_3D,-#largeur_ecran*0.41*0.5,-#largeur_ecran*0.41*0.5)
Stop3D()
Repeat
Event = WindowEvent()
If Event = #PB_Event_CloseWindow
End
EndIf
Until Event = 0
Delay(1)
ForEver