Alle Einschränkungen (Spritgröße, quadratische Sprites, ..) scheinen Vergangenheit zu sein.
Danke an die Entwickler!
Leider gibt es wohl doch einen kleinen Bug.
Sobald der Winkel ungleich 0 Grad ist, wird als Spritehöhe die Breite verwendet, wodurch DisplaySprite3D
das Sprite vertikal falsch positioniert.
Den Korrekturvorschlag sehe ich nur als Notlösung
(Getestet unter Win2000 und mit 3 Windows-7 PCs)
Code: Alles auswählen
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Sprite system can't be initialized", 0)
End
EndIf
If InitSprite3D() = 0
MessageRequester("Error", "Sprite3D system can't be initialized correctly", 0)
End
EndIf
If OpenScreen(640,480,32, "Sprite-Rotate")
sprw=600:sprh=440
CreateSprite(0,sprw,sprh,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(0))
Box(0,0,sprw,sprh,RGB(128,0,0))
StopDrawing()
CreateSprite3D(0, 0)
Repeat
If x<200 ;nach ca 2s wird der Winkel auf 1Grad geändert
x=x+1
Else
deg=1
EndIf
FlipBuffers()
ClearScreen(RGB(0,50,128))
If Start3D()
RotateSprite3D(0,deg,#PB_Absolute)
;If deg<>0:vkorr=(sprh-sprw)/2:EndIf ;mögliche Korrektur
DisplaySprite3D(0,20,20+vkorr)
Stop3D()
EndIf
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
End 