Hi dllfreak2001, über dieses Thema hatten wir uns bereits vor etwas längerer Zeit ausgetauscht.
ClearScreen() bremste zumindest damals das Ganze in PB 4.51.
(Ich habe es nicht getestet, aber wahrscheinlich ist dann auch ein eigener Thread für die Mausabfrage nicht mehr unbedingt nötig, wenn DirectX7 als Subsystem im Compiler eingestellt ist.)
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
Eigentlich wollte ich dieses noch mit dem Code von S.M. für Triple Buffering zusammen mit der Mausabfrage testen, allerdings waren dann meine Kenntnisse doch zu bescheiden.