sprite flackern beheben
Verfasst: 03.09.2010 07:35
Hallo
Eigentlich eine ganz einfache Aufgabe: ich möchte ein Sprite von a nach b wandern lassen. Als Vorlage habe ich ein Beispiel aus der PB-Hilfe genommen. Allerdings stelle ich immer nach etwa 320 Pixel ein starkes Flackern fest. Wie kann ich dieses Flackern vermeiden, so, dass sich das Sprite "glatt" von a nach b bewegt?
Hier der Quelltext, der von mir leicht abgeändert wurde:
Wo muss ich "drehen"?
Vielen Dank für Eure Hilfe im Voraus
Klaus
Eigentlich eine ganz einfache Aufgabe: ich möchte ein Sprite von a nach b wandern lassen. Als Vorlage habe ich ein Beispiel aus der PB-Hilfe genommen. Allerdings stelle ich immer nach etwa 320 Pixel ein starkes Flackern fest. Wie kann ich dieses Flackern vermeiden, so, dass sich das Sprite "glatt" von a nach b bewegt?
Hier der Quelltext, der von mir leicht abgeändert wurde:
Code: Alles auswählen
;
; ------------------------------------------------------------
;
; PureBasic - Sprite example file
;
; (c) 2002 - Fantaisie Software
;
; !!! modified for sprite test by KN !!!
;
; ------------------------------------------------------------
;
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
;
; Now, open a 1920*1080 - 32 bit screen
;
If OpenScreen(1920,1080, 32, "Sprite")
; Load sprite
LoadSprite(0, #PB_Compiler_Home + "examples/sources/data/PureBasicLogo.bmp", #PB_Sprite_Texture)
CreateSprite3D(0, 0)
CreateSprite3D(1, 0)
Sprite3DQuality(#PB_Sprite3D_BilinearFiltering)
TransparentSpriteColor(0, RGB(255, 0, 255)) ; Our pink is transparent :)
Repeat
; Inverse the buffers (the back become the front (visible)... And we can do the rendering on the back)
FlipBuffers()
ClearScreen(RGB(0,50,128))
;
; Draw our sprite
;
Start3D()
DisplaySprite3D(0, x+100, 100, x)
;
; Zoom..
;
ZoomSprite3D(1, x, x/6)
RotateSprite3D(1, x, 0)
DisplaySprite3D (1, x, 100, x)
Stop3D()
ExamineKeyboard()
x+1
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Error", "Can't open a 1920*1080 - 32 bit screen !", 0)
EndIf
End
Vielen Dank für Eure Hilfe im Voraus
Klaus