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.
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