Ответ: Синхронизация в Blitz3D
Твининг хорошая штука, но бываю трудности. Вот например я не могу тени прикрутить, при синхронизации с твином. Выбор встает либо тени либо твининг.
Суть примерно такая: если ты просто ограничил количество кадров, то при падении фпс ниже твоего ограничения игра начнет замедляться, если с твином, то все будет идти с той же скоростью, только как бы рывками.
Дельта тайминг сложно провести через всю игру, нужно будет ко всему добавлять дельту - к перемещения, вращения, изменения размеров, альфы и цвета (для спрайтов) и многое другое. А твининг избавляет от этого, с лучшим эффектом промежуточные кадры.
Graphics3D 1024,768,32,1
cam=CreateCamera ()
MoveEntity cam,0,0,-5
RotateEntity CreateLight (),30,30,0
cube=CreateCube()
EntityColor cube ,100,150,250
FPS =30
period = 1000 / FPS
Time = MilliSecs () - period
Repeat
Repeat
elapsed = MilliSecs () - Time
Until elapsed
ticks = elapsed / period
tween# = Float (elapsed Mod period) / Float (period)
For framelimit = 1 To ticks
If framelimit = ticks CaptureWorld
Time = Time + period
;===
TurnEntity cube,0,1,1
If KeyDown(57) Delay ( Rand(20,40))
;===
UpdateWorld
Next
RenderWorld tween#
Flip 0 ; или 1
Until KeyHit(1)
End
|