Hallo Mijikai,
nach einem Neustart bekomme ich völlig andere Werte:
ein Durchlauf d to 1: 14 ms
StartDrawing: 9 ms StartDraw2: 11 ms
StopDrawing: 25 ms StopDrawing2:0 ms
ZeitInfo: DrawingBuffer() + DrawingBufferPitch() + DrawingBufferPixelFormat: 3 ms
Hier der Testcode:
Code:
; ImportC "E:\demo.obj" ; Laufwerk+Datei anpassen pocc /Tx64-coff E:/demo.c
; demo(RGB.l,*Buffer,Pitch.l,ScreenWidth.l,ScreenHeight.l)
; EndImport
ExamineDesktops()
ScreenWidth.l=DesktopWidth(0)
ScreenHeight.l=DesktopHeight(0)
;#ScreenWidth = 1200 ;1920
;#ScreenHeight = 1920 ; 1080
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "DirectX is needed.",0)
EndIf
If OpenScreen(ScreenWidth, ScreenHeight, 32, "PB Plasma")
RGB.l=255 <<24+255<<16+255<<8+0
zeit=ElapsedMilliseconds()
If StartDrawing(ScreenOutput())
StartDraw=ElapsedMilliseconds()-zeit
zeit=ElapsedMilliseconds()
StopDrawing()
ZeitStopDrawing=ElapsedMilliseconds()-zeit
zeit=ElapsedMilliseconds()
StartDrawing(ScreenOutput())
StartDraw2=ElapsedMilliseconds()-zeit
zeit=ElapsedMilliseconds()
Buffer = DrawingBuffer() ; Get the start address of the screen buffer
Pitch.l = DrawingBufferPitch() ; Get the length (in byte) took by one horizontal line
PixelFormat = DrawingBufferPixelFormat() ; Wird nicht genutzt könnte 1, 2, 3 Byte oder BGR oder Y umgekehrt sein.
ZeitInfo=ElapsedMilliseconds()-zeit
zeit=ElapsedMilliseconds()
DisableDebugger
For d=1 To 1 ;100 x Screen mit Pixel beschreiben
; demo(RGB,Buffer,Pitch,ScreenWidth-1,ScreenHeight-1)
For y = 0 To ScreenHeight-1
For x = 0 To ScreenWidth-1 ;Rechne alles in der innersten Klammer (auch y, nur Test)
; ;Var 1 Direkt in Klammer
; ;PokeL(buffer+Pitch*y+x*4,RGB) ;940 Millisec
; ;Var 2
; ;b=buffer+Pitch*y
; ;b=b+x*4
; ;PokeL(b,RGB) ;1920 Millisec
; ;Var 3
; ;h=Pitch*y
; ;b=x*4
; ;hb=h+b
; ;PokeL(buffer+hb,RGB) ;1656 Millisec
;Var 4
b=buffer+pitch*y+x*4
PokeL(b,RGB) ; 2625 Millisec
Next
Next
Next
Dauer=ElapsedMilliseconds()-zeit
EnableDebugger
zeit=ElapsedMilliseconds()
StopDrawing()
ZeitStopDrawing2=ElapsedMilliseconds()-zeit
EndIf
;ExamineKeyboard()
FlipBuffers()
Delay(1000)
;FlipBuffers()
CloseScreen()
s.s="ein Durchlauf d to 1: "+Str(Dauer)+" ms"+#CRLF$+
"StartDrawing: "+Str(StartDraw)+" ms StartDraw2: "+Str(StartDraw2)+" ms"+#CRLF$+
" StopDrawing: "+Str(ZeitStopDrawing)+ " ms StopDrawing2:"+Str(ZeitStopDrawing2)+" ms"+#CRLF$+
" ZeitInfo: DrawingBuffer() + DrawingBufferPitch() + DrawingBufferPixelFormat: "+Str(ZeitInfo)+" ms"
SetClipboardText(s)
MessageRequester(Str(Pitch)+"Zeitr",s,0)
SetClipboardText(s)
Else
MessageRequester("Error","Can't open the screen !",0)
EndIf
Gruß