func NewFramerate() *FPSmanager { return &FPSmanager{ framecount: 0, rate: FPS_DEFAULT, rateticks: (1000.0 / float32(FPS_DEFAULT)), lastticks: sdl.GetTicks(), } }
func (manager *FPSmanager) FramerateDelay() { var current_ticks, target_ticks, the_delay uint32 // next frame manager.framecount++ // get/calc ticks current_ticks = sdl.GetTicks() target_ticks = manager.lastticks + uint32(float32(manager.framecount)*manager.rateticks) if current_ticks <= target_ticks { the_delay = target_ticks - current_ticks sdl.Delay(the_delay) } else { manager.framecount = 0 manager.lastticks = sdl.GetTicks() } }
func draw() { gl.Clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT) gl.PushMatrix() gl.Rotated(view_rotx, 1.0, 0.0, 0.0) gl.Rotated(view_roty, 0.0, 1.0, 0.0) gl.Rotated(view_rotz, 0.0, 0.0, 1.0) gl.PushMatrix() gl.Translated(-3.0, -2.0, 0.0) gl.Rotated(angle, 0.0, 0.0, 1.0) gl.CallList(gear1) gl.PopMatrix() gl.PushMatrix() gl.Translated(3.1, -2.0, 0.0) gl.Rotated(-2.0*angle-9.0, 0.0, 0.0, 1.0) gl.CallList(gear2) gl.PopMatrix() gl.PushMatrix() gl.Translated(-3.1, 4.2, 0.0) gl.Rotated(-2.0*angle-25.0, 0.0, 0.0, 1.0) gl.CallList(gear3) gl.PopMatrix() gl.PopMatrix() sdl.GL_SwapBuffers() Frames++ { t := sdl.GetTicks() if t-T0 >= 5000 { seconds := (t - T0) / 1000.0 fps := Frames / seconds print(Frames, " frames in ", seconds, " seconds = ", fps, " FPS\n") T0 = t Frames = 0 } } }