vor längerer Zeit habe ich bemerkt, dass wohl ClearScreen() nur eingebunden in StartSpecialFX()/StopSpecialFX beschleunigt ist.
Allerdings wird anscheinend die Beschleunigung in PB 4.51 nur mit DirectX7 als Subsystem genutzt. Ein anderer PB-User hat mir zumindest die Verzögerung in DirectX9 im Vergleich zu DirectX7 bestätigt, danke nochmal dafür.
Dies ist der Code(getestet mit PB 4.51 Demo/Windows XP 32-bit) mit dem ich es festgestellt hatte. Die unterschiedliche Geschwindigkeit des Mauscursor zwischen DirectX7/DirectX9 als Subsystem macht sich zumindest bei mir deutlich bemerkbar.
Code: Alles auswählen
EnableExplicit
InitKeyboard()
InitMouse()
InitSprite()
InitSprite3D()
#Width = 1280
#Height = 1024
#Depth = 32
#Hz = 60
If OpenScreen(#Width, #Height, #Depth,"MouseThread", #PB_Screen_WaitSynchronization, #Hz) = #False
End
EndIf
Define.i
Structure MousePos
*xPos.Integer
*yPos.Integer
EndStructure
Global x = 1, y = 1, *Position.MousePos = AllocateMemory(SizeOf(MousePos)), *Position\xPos = @x, *Position\yPos = @y, Spritenr, quit = #False, Color = 100
For Spritenr = 0 To 30
CreateSprite(Spritenr, 128, 128, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(Spritenr))
Box(0, 0, 128, 128, RGB(Color-70,Color-50,Color-10))
StopDrawing()
CreateSprite3D(Spritenr, Spritenr)
Color + 1
Next Spritenr
Sprite3DQuality(1)
Procedure mousethread(flag.i)
If flag
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
quit = #True
Break
EndIf
Delay(1)
ExamineMouse()
*Position\xPos\i = MouseX()
*Position\yPos\i = MouseY()
Until quit
EndIf
EndProcedure
CreateThread(@mousethread(),#True)
Repeat
StartSpecialFX()
ClearScreen(0)
StopSpecialFX()
Start3D()
Delay(1)
DisplaySprite3D(0, x, y, 155)
DisplaySprite3D(1, x-1, y+1, 155)
DisplaySprite3D(2, x-2, y+2, 155)
DisplaySprite3D(3, x-3, y+3, 155)
DisplaySprite3D(4, x-4, y+4, 155)
DisplaySprite3D(5, x-5, y+5, 155)
DisplaySprite3D(6, x-6, y+6, 155)
DisplaySprite3D(7, x-7, y+7, 155)
DisplaySprite3D(8, x-8, y+8, 155)
DisplaySprite3D(9, x-9, y+9, 155)
DisplaySprite3D(10, x-10, y+10, 155)
DisplaySprite3D(11, x-11, y+11, 155)
DisplaySprite3D(12, x-12, y+12, 155)
DisplaySprite3D(13, x-13, y+13, 155)
DisplaySprite3D(14, x-14, y+14, 155)
DisplaySprite3D(15, x-15, y+15, 155)
DisplaySprite3D(16, x-16, y+16, 155)
DisplaySprite3D(17, x-17, y+17, 155)
DisplaySprite3D(18, x-18, y+18, 155)
DisplaySprite3D(19, x-19, y+19, 155)
DisplaySprite3D(20, x-20, y+20, 155)
DisplaySprite3D(21, x-21, y+21, 155)
DisplaySprite3D(22, x-22, y+22, 155)
DisplaySprite3D(23, x-23, y+23, 155)
DisplaySprite3D(24, x-24, y+24, 155)
DisplaySprite3D(25, x-25, y+25, 155)
DisplaySprite3D(26, x-26, y+26, 155)
DisplaySprite3D(27, x-27, y+27, 155)
DisplaySprite3D(28, x-28, y+28, 155)
DisplaySprite3D(29, x-29, y+29, 155)
DisplaySprite3D(30, x-30, y+30, 155)
Stop3D()
FlipBuffers()
Until quit
CloseScreen()
End