Quelle alternative pour la fonction Usebuffer() ?[Résolu]
Publié : dim. 14/mars/2010 4:05
Hello,
Je reformule une question posée précedemment :
http://www.purebasic.fr/french/viewtopi ... =1&t=10287
J'ai vu, chez les voisins, que cette question commence à fatiguer
http://www.purebasic.fr/english/viewtop ... it=sokoban
Ca ne me pose aucun problème de mettre "directx7" dans les options du compilateur.
Je trouve la fonction Usebuffer() très pratique (création d'un sprite à partir d'autres, modification d'un sprite dans la boucle principale).
Si un jour on doit faire sans, y a-t-il aussi efficace ou mieux comme fonction ?
Il y a un exemple dans le premier lien, au lieu d'afficher des milliers de sprites, je change le décor uniquement où il se passe quelque chose (le CPU apprécie beaucoup
).
Exemple de petit code où j'utilise des sprites pour créer le décor (Ne pas oublier de mettre directx7 dans les options du compilateur!):
)
Merci d'avance
Hasta la vista !
Je reformule une question posée précedemment :
http://www.purebasic.fr/french/viewtopi ... =1&t=10287
J'ai vu, chez les voisins, que cette question commence à fatiguer

http://www.purebasic.fr/english/viewtop ... it=sokoban
Ca ne me pose aucun problème de mettre "directx7" dans les options du compilateur.
Je trouve la fonction Usebuffer() très pratique (création d'un sprite à partir d'autres, modification d'un sprite dans la boucle principale).
Si un jour on doit faire sans, y a-t-il aussi efficace ou mieux comme fonction ?
Il y a un exemple dans le premier lien, au lieu d'afficher des milliers de sprites, je change le décor uniquement où il se passe quelque chose (le CPU apprécie beaucoup

Exemple de petit code où j'utilise des sprites pour créer le décor (Ne pas oublier de mettre directx7 dans les options du compilateur!):
(N.B Je ne souhaite pas passer par la bibliothèque "Image"Comment faire sans Usebuffer()?
Une fois le programme lancé, comment modifier le sprite "décor" en direct ?

Code : Tout sélectionner
;tuiles
;pb v4.41
;*********************************
#largeur_ecran=800
#hauteur_ecran=600
#spr_herbe=0
#spr_mur=1
#spr_decor=2
Dim carte.b(7,5)
Restore carte
For y=0 To 5
For x=0 To 7
Read.b type_tuile
carte(x,y)=type_tuile
Next x
Next y
InitSprite()
InitKeyboard()
OpenWindow(0,0,0,#largeur_ecran,#hauteur_ecran,"tuiles",#PB_Window_ScreenCentered|#PB_Window_SystemMenu )
OpenWindowedScreen(WindowID(0),0,0,#largeur_ecran,#hauteur_ecran,0,0,0)
CreateSprite(#spr_herbe,100,100)
StartDrawing(SpriteOutput(#spr_herbe))
Box(2,2,96,96,RGB(0,255,0))
StopDrawing()
CreateSprite(#spr_mur,100,100)
StartDrawing(SpriteOutput(#spr_mur))
Box(2,2,96,96,RGB(0,128,128))
StopDrawing()
CreateSprite(#spr_decor,#largeur_ecran,#hauteur_ecran)
;-utilisation de Usebuffer()
;-sans oublier
;-de choisir directx7
;-dans les options du compilateur
UseBuffer(#spr_decor)
For y=0 To 5
For x=0 To 7
DisplaySprite(carte(x,y),x*100,y*100)
Next x
Next y
UseBuffer(#PB_Default)
Repeat
FlipBuffers()
DisplaySprite(#spr_decor,0,0)
Delay(10)
Until WindowEvent() = #PB_Event_CloseWindow
DataSection
carte:
Data.b 1,1,1,1,1,1,1,1
Data.b 1,0,0,0,0,0,0,1
Data.b 1,0,1,0,0,0,0,1
Data.b 1,0,0,0,0,1,0,1
Data.b 1,0,0,0,0,0,0,1
Data.b 1,1,1,1,1,1,1,1
EndDataSection
Hasta la vista !