Re: Surface de dessin la plus rapide?
Publié : sam. 01/oct./2016 17:17
C'est le full screen le plus rapide.
Forums PureBasic - Français
https://www.purebasic.fr/french/
22JohnJohnsonSHERMAN a écrit :Dis mois quelle valeur de fps tu as falsam (le petit chiffre en haut à gauche).
Bonjour Falsam,Falsam a écrit :Sort pas des trucs comme ça sans regardé le context du code.
Sors pas des trucs comme ça sans regarder le contexte du code.
Tu as répondu pour une fois avec une réponse tellement courte et compréhensive que je suis certain que tu n'as pas testé le zip de John.1) Prouve-le que je n'ai pas regardé le "contexte du code", cela m'intéresse.
Gna Gna Gna. C'est facile quand on manque de répondant ^^ En général je fais attention mais en ce moment je ne suis pas en forme.2) S'il te plaît, t'est-il possible de faire moins de fautes?
Processeur i3 3Ghz 4 Go RamJohnJohnsonSHERMAN a écrit :T'as quoi comme processeur?
Code : Tout sélectionner
IncludeFile "bass.pbi"
IncludeFile "bass2.pbi"
UsePNGImageDecoder()
InitSprite()
Enumeration
#Sherman
#Fond
#Window
EndEnumeration
Define File.s
Global streamID, width,height, ShermanX,ShermanY, FPScount,FPS
#width = 800
#height = 600
Declare TH_Background(param)
If CountProgramParameters() = 0
File = OpenFileRequester("Choisissez un fichier à lire","","Musique|*.wav;*.mp3;*.ogg|Wave|*.wav|MP3|*.mp3",0)
Else
File = ProgramParameter(0)
EndIf
LoadImage(#Sherman,"M4_Sherman_early_normandy.png")
ShermanX = (#width/2)-(ImageWidth(#Sherman)/2)
ShermanY = (#height/2)-(ImageHeight(#Sherman)/2)
OpenWindow(#Window, 0, 0, #width,#height,"Sherman - ",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
;CanvasGadget(#Fond,0,0,#width,#height)
AddWindowTimer(#Window,1,1000)
retval_init = BASS_Init(-1,48000,0,WindowID(#Window),0)
streamID = BASS_StreamCreateFile(#False,File,0,0,#BASS_UNICODE | #BASS_SAMPLE_FLOAT | #BASS_SAMPLE_LOOP)
BASS_ChannelPlay(streamID,0)
CreateThread(@TH_Background(),1)
;- Boucle principale
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_Timer
If EventTimer()= 1
FPS = FPScount
FPScount= 0
EndIf
EndSelect
Until event = #PB_Event_CloseWindow
;-Procédures
Procedure TH_Background(param)
Protected vol,volf.f,clr.i
OpenWindowedScreen(WindowID(#Window),0,0,800,600)
Repeat
vol = BASS_ChannelGetLevel(streamID)
vol = (vol & $FFFF)
volf = (vol/32768)*255
If clr = $FFFFFF
clr = 0
Else
clr = $FFFFFF
EndIf
FPScount + 1
StartDrawing(ScreenOutput())
Box(0,0,#width,#height,$000000)
FrontColor($000000)
BackColor(RGB(volf,volf,volf))
DrawingMode(#PB_2DDrawing_Gradient)
CircularGradient(#width/2,#height/2,500)
Box(0,0,#width,#height,RGB(volf,volf,volf))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,10,16,clr)
DrawText(11,0,Str(FPS),$000000,$FFFFFF)
DrawingMode(#PB_2DDrawing_AlphaBlend)
DrawImage(ImageID(#Sherman),ShermanX, ShermanY)
StopDrawing()
FlipBuffers()
Delay(25)
ForEver
EndProcedure
Code : Tout sélectionner
IncludeFile "bass.pbi"
IncludeFile "bass2.pbi"
UsePNGImageDecoder()
InitSprite()
InitKeyboard()
Enumeration
#Sherman
#Fond
#Window
EndEnumeration
Define File.s
Global streamID, width,height, ShermanX,ShermanY, FPScount,FPS
Global starttime, time
#width = 800
#height = 600
Declare TH_Background()
If CountProgramParameters() = 0
File = OpenFileRequester("Choisissez un fichier à lire","","Musique|*.wav;*.mp3;*.ogg|Wave|*.wav|MP3|*.mp3",0)
Else
File = ProgramParameter(0)
EndIf
OpenWindow(#Window, 0, 0, #width,#height,"Sherman - ",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#Window), 0, 0, #width, #height)
LoadSprite(#Sherman, "M4_Sherman_early_normandy.png", #PB_Sprite_AlphaBlending)
retval_init = BASS_Init(-1,48000,0,WindowID(#Window),0)
streamID = BASS_StreamCreateFile(#False,File,0,0,#BASS_UNICODE | #BASS_SAMPLE_FLOAT | #BASS_SAMPLE_LOOP)
BASS_ChannelPlay(streamID,0)
;- Boucle principale
starttime=ElapsedMilliseconds()
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event=0
ClearScreen(RGB(0, 0, 0))
TH_Background()
ExamineKeyboard()
FPScount + 1
If time>1000
FPS = FPScount
FPScount=0
starttime=ElapsedMilliseconds()
EndIf
FlipBuffers()
time=ElapsedMilliseconds()-starttime
Until KeyboardPushed(#PB_Key_Escape)
;-Procédures
Procedure TH_Background()
Protected vol,volf.f,clr.i
vol = BASS_ChannelGetLevel(streamID)
vol = (vol & $FFFF)
volf = (vol/32768)*255
If clr = $FFFFFF
clr = 0
Else
clr = $FFFFFF
EndIf
StartDrawing(ScreenOutput())
FrontColor($000000)
BackColor(RGB(volf,volf,volf))
DrawingMode(#PB_2DDrawing_Gradient)
CircularGradient(#width/2,#height/2,500)
Box(0,0,#width,#height,RGB(volf,volf,volf))
DrawingMode(#PB_2DDrawing_Default)
Box(0,0,10,16,clr)
DrawText(11,0,Str(FPS),$000000,$FFFFFF)
StopDrawing()
DisplayTransparentSprite(#Sherman, (ScreenWidth() - SpriteWidth(#Sherman))/2, (ScreenHeight() - SpriteHeight(#Sherman))/2)
EndProcedure
Je me demande entre le canvas, la fenêtre, le screen et le screen fenêtré lequel est le plus rapide pour y dessiner ?
Ollivier a écrit :C'est le full screen le plus rapide.
ben Olivier a parfaitement répondu a la question !falsam a écrit :Sors pas des trucs comme ça sans regarder le contexte du code.
Je ne perds pas mon temps à considérer que l'informatique est un acquis, mais une chance. Je te cite aussi :Falsam a écrit :Tu as répondu pour une fois avec une réponse tellement courte et compréhensive que je suis certain que tu n'as pas testé le zip de John.
Prends ton temps à retrouver sur ce forum les "fois" que tu as négligées, et qui forment le résultat de te voir écrire un mensonge. Tu me fais perdre du temps pour rien. Je te rappele que le "truc" que j'ai écrit est exact : si tu pouvais préciser la durée minimum d'attente avant de répondre des autres membres, pourquoi pas?Falsam a écrit :[...]pour une fois[...]
Ce n'est pas parce que tu n'es pas en forme qu'il faut jeter le moindre des courroux sur quiconque. Ce sont de basses méthodes. Bon rétablissement, à toi qui, sûrement, vit le martyre.Falsam a écrit : Gna Gna Gna. C'est facile quand on manque de répondant ^^ En général je fais attention mais en ce moment je ne suis pas en forme.