ich habe folgendes problem
ich erstelle ein 2d sprite aus einer datei
das wandel ich in ein 3d sprite
das drehe ich
dann will es wieder in ein 2d sprite umwandeln
Code: Alles auswählen
UsePNGImageDecoder()
UseJPEG2000ImageDecoder()
UseJPEGImageDecoder()
Dim posx.l (200)
Dim posy.l (200)
Dim winkel.l (200)
Dim high.l (200)
Dim wide.l (200)
Dim spiegel.l (200)
x.i
y.i
posx(10)=0
posy(10)=0
winkel(10)=90
high(10)=300
wide(10)=400
posx(11)=100
posy(11)=100
winkel(11)=45
high(11)=300
wide(11)=400
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse()=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 OpenWindow(0,0,0,1024,768, "Nipkow",#PB_Window_MinimizeGadget| #PB_Window_ScreenCentered|#PB_Window_SizeGadget )
; OpenWindowedScreen(WindowID(0), 0, 0, 1024, 768, 1, 1, 1)
If OpenScreen(1024,768,32," ")
; SetActiveWindow(0)
LoadSprite(11,"bau schwarz.png", #PB_Sprite_Texture);|#PB_Sprite_AlphaBlending )
LoadSprite(12,"rund.png", #PB_Sprite_Texture|#PB_Sprite_AlphaBlending )
LoadSprite(10,"hinterweis1.png", #PB_Sprite_Texture);|#PB_Sprite_AlphaBlending)
LoadSprite(0,"cursor3.png",#PB_Sprite_Texture|#PB_Sprite_AlphaBlending)
CreateSprite(1000,1,1)
If IsSprite(0)=0
End
EndIf
CreateSprite3D(11, 11)
;CreateSprite3D(12, 12)
CreateSprite3D(10, 10)
; CreateSprite3D(0, 0)
; Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)
Repeat
;Debug FormatDate("%ss",Date())
ClearScreen(RGB(0,50,128))
; Draw our sprite
;
;ReleaseMouse(0)
ExamineMouse()
x=MouseX()
y=MouseY()
; DisplaySprite(0,x,y)
;ReleaseMouse(1)
If 1=1
For Objekt= 1 To 200
If IsSprite(objekt+200)
FreeSprite(objekt+200)
EndIf
If IsSprite3D(objekt)
size=Sqr(wide(objekt)*wide(objekt)+high(objekt)*high(objekt))
ob=objekt+200
Debug Str(size)+" "+Str(ob)
CreateSprite(ob,size,size,#PB_Sprite_Texture)
; Start3D()
ZoomSprite3D(objekt,wide(objekt), high(objekt))
If spiegel=0
; TransformSprite3D(objekt, posx(Objekt), posy(Objekt),posx(Objekt)+wide(objekt), posy(objekt), posx(Objekt)+wide(objekt), posy(Objekt)+high(objekt), posx(objekt), posy(objekt)+high(objekt))
Else
;TransformSprite3D(#Sprite3D, x1, y1, [z1], x2, y2, [z2], x3, y3, [z3], x4, y4, [z4])
EndIf
RotateSprite3D(objekt, winkel(objekt), #PB_Absolute)
ExamineMouse()
x=MouseX()
y=MouseY()
UseBuffer(ob)
Start3D()
; FlipBuffers()
DisplaySprite3D(objekt,posx(Objekt),posy(Objekt))
Stop3D()
; FlipBuffers()
UseBuffer(-1)
;DisplayTransparentSprite(objekt+200,500,500)
If MouseButton(#PB_MouseButton_Left)
Debug objekt+200
If SpriteCollision(0,x,y,objekt,posx(Objekt),Posy(objekt)) And aktivesobjekt=0
aktivesobjekt=objekt
aktivesobjektx=posx(Objekt)
aktivesobjekty=posy(Objekt)
aktivesobjektwide=wide(objekt)
aktivesobjekthigh=high(objekt)
aktivesobjektdeltax=x-aktivesobjektx
aktivesobjektdeltay=y-aktivesobjekty
EndIf
If aktivesobjekt>0
posx(aktivesobjekt)=x-aktivesobjektdeltax
posy(aktivesobjekt)=y-aktivesobjektdeltay
EndIf
Else
aktivesobjekt=0
EndIf
EndIf
Next
;Debug "AktivesObjekt:"+ Str(aktivesobjekt)+" aktivesobjektx= "+Str( aktivesobjektx)+" aktivesobjekty= "+Str( aktivesobjekty)+" aktivesobjektdeltax= "+Str( aktivesobjektdeltax)+" aktivesobjektdeltay= "+Str( aktivesobjektdeltay)+"maus x y" +Str(x)+" "+Str(y)
DisplaySprite(0,x,y)
FlipBuffers()
EndIf
Delay (5)
;Event = WaitWindowEvent()
ExamineKeyboard()
If Event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape) ; If the user has pressed on the close button
Quit = 1
EndIf
Until Quit = 1
EndIf
UseBuffer(ob)
Start3D()
DisplaySprite3D(objekt,posx(Objekt),posy(Objekt))
Stop3D()
UseBuffer(-1)
das ganze rendert leider nur auf dem screen und nicht auf dem sprite wie kann das sein?
mit freundlichem gruß
Thomas
purebasic vollversion 4.60 winxp