I have tested this code on both MacOS and Vista (both on a MacBook with BootCamp so the hardware is identical).
In both OS's I am seeing serious juddering with Flip -1, and slight juddering with Flip 0.
On MacOS it is almost perfect on Flip 0 but not quite. Vista seems to have spasms where juddering on Flip 0 goes from non-existent to noticable.
On Flip 0 I'm getting an FPS of about 900 on the Mac and 1300 on Vista. The FPS does fluctuate quite a bit - is this normal?
Is there something wrong with the code? Is it due to background tasks? A driver issue maybe? I should point out that the juddering isn't constant but why is it so bad on Flip -1?
Please have a look and let me know what you think.
SuperStrict
Import klepto.miniB3D
Graphics3D(800, 600, 32, 0, 60)
TGlobal.SetDeltaFPS(60)
Global cam:TCamera = CreateCamera()
CameraRange(cam,1,2000)
CameraZoom(cam, 1.8)
PositionEntity(cam,0,200,-1500)
Global light:TLight = CreateLight(1)
Global Gravity:Float = 0.65
Global f:Int = -1 ' Flip mode
Global ball:TBall = TBall.CreateBall()
Repeat
ball.Update()
UpdateWorld
RenderWorld
DrawText("FPS:"+Int(TGlobal.GetFPS()), 10, 10)
If KeyHit(KEY_SPACE)
f:+1
If f = 1 Then f = -1
End If
Select f
Case -1
DrawText("Flip -1 (Space)", 10, 30)
Flip -1
Case 0
DrawText("Flip 0 (Space)", 10, 30)
Flip 0
End Select
Until KeyDown(KEY_ESCAPE)
Type TBall
Field mesh:TMesh
Field radius:Float
Field x:Float
Field y:Float
Field z:Float
Field xv:Float
Field yv:Float
Field zv:Float
Function CreateBall:TBall()
Local b:TBall = New TBall
b.mesh = CreateSphere(16)
b.radius = 50
ScaleEntity(b.mesh, b.radius, b.radius, b.radius)
EntityColor(b.mesh, 255, 255, 255)
PositionEntity(b.mesh, 0, 10, 0)
b.xv = 15
b.yv = 0 '-10
Return b
End Function
Method Update()
Local delta:Double = TGlobal.GetDelta()
' Move ball
TranslateEntity(mesh, xv*delta, yv*delta, zv*delta)
' Keep ball on screen
If EntityX(mesh) > 800 Then PositionEntity(mesh, 800, EntityY(mesh), EntityZ(mesh)); xv=-xv
If EntityX(mesh) < -800 Then PositionEntity(mesh, -800, EntityY(mesh), EntityZ(mesh)); xv=-xv
End Method
EndType
|