Hallo,
ich kann mich noch erinnern, dass man mit negativen Werten für bestimmte Koordinaten ein 3D-Sprite spiegeln konnte.
Leider bekomme ich das nicht mehr hin. Sobald (Beispiel: horizontal) die rechten Koordinaten kleiner werden als die linken, verschwindet das 3D-Sprite.
Geht das Spiegeln mit dieser Methode überhaupt (noch)? Also die Rückseite des Sprites zu betrachten?
Spiegeln mit TransformSprite3D()
Re: Spiegeln mit TransformSprite3D()
Nur mit TransformSprite3D() geht es nicht, da eine Spiegelung ja die Rückseite eines Sprites wäre, welche aber nicht gerendert wird.
Dazu musst die dies Aktivieren:
Dann kannst du auch mit ZoomSprite3D arbeiten ...
Dazu musst die dies Aktivieren:
Code: Alles auswählen
Define pd3d.IDirect3DDevice9
; [...]
Start3D()
; Zum Rändern der "anderen" Seite
EnableASM
!extrn _PB_Screen_Direct3DDevice
!MOV dword EAX, [_PB_Screen_Direct3DDevice]
!MOV dword [v_pd3d],EAX
DisableASM
pd3d\SetRenderState(22,1)
Code: Alles auswählen
InitSprite()
InitSprite3D()
OpenWindow(0, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)
Sprite3DQuality(1)
Font = FontID(LoadFont(#PB_Any, "Arial", 192))
CreateSprite(1, 256, 256, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(1))
DrawingFont(Font) : DrawingMode(1)
Box(0,0,256,256,$FF0000)
DrawText(0,0,"F", $0000FF, 0)
StopDrawing()
CreateSprite3D(1, 1)
Define pd3d.IDirect3DDevice9
Repeat
ClearScreen(0)
#HalfSize = 150
Start3D()
; Zum Rändern der "anderen" Seite
EnableASM
!extrn _PB_Screen_Direct3DDevice
!MOV dword EAX, [_PB_Screen_Direct3DDevice]
!MOV dword [v_pd3d],EAX
DisableASM
pd3d\SetRenderState(22,1)
a.f = ElapsedMilliseconds()/1000
ZoomSprite3D(1,200*Sin(a),200)
DisplaySprite3D(1, 400-100*Sin(a), 200)
FlipBuffers()
Until WindowEvent() = #PB_Event_CloseWindow
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr