Hi,

I'm trying to run my pyglet program at 60 FPS, but am running into a 
problem where it runs at considerably slower than 60 FPS when the mouse 
isn't moving over the window. However when I move the mouse continuously 
over the window then the animation plays smoothly at 60 FPS. One thing I 
will note is that when I look at the CPU usage of the python program, the 
usage increases significantly when I am moving the mouse and the animation 
is playing smoothly. Could this be an issue with my Windows OS?

Here is a small Python program that reproduces the problem for me. I am 
using pyglet 1.4.6.

from math import radians, cos, sin
import pyglet
from pyglet.gl import *
from win32api import GetSystemMetrics

class Ball():
    x = 0
    y = 0
    color = (0, 0, 0)
    radius = 5

class PrimaryWindow(pyglet.window.Window):
    FPS = 60
    smoothConfig = Config(sample_buffers=1, samples=4, depth_size=16, 
double_buffer=True)
    screenWidth = GetSystemMetrics(0)
    screenHeight = GetSystemMetrics(1)
    windowWidthPixels = int(screenWidth/2)
    windowHeightPixels = int(screenHeight/2)

    ballRadiusPixels = 20
    ballVelocity = 10
    ballColor = (0, 128 / 255, 255 / 255, 1)

    def __init__(self):
        super(PrimaryWindow, self).__init__(config=self.smoothConfig)
        self.set_size(self.windowWidthPixels, self.windowHeightPixels)
        self.set_location(int(self.screenWidth/2 - self.windowWidthPixels/2
), int(self.screenHeight/2 - self.windowHeightPixels/2))

        self.ball = Ball()
        self.ball.x = self.windowWidthPixels/2
        self.ball.y = self.windowHeightPixels/2
        self.ball.radius = self.ballRadiusPixels
        self.ball.color = self.ballColor

        pyglet.clock.schedule_interval(self.update, 1.0 / self.FPS)
        pyglet.app.run()

    def on_draw(self):
        self.clear()

        verts = []
        for i in range(100):
            angle = radians(float(i)/100*360.0)
            x = self.ball.radius*cos(angle) + self.ball.x
            y = self.ball.radius*sin(angle) + self.ball.y
            verts += [x, y]

        circle = pyglet.graphics.vertex_list(100, ('v2f', verts))
        glClear(pyglet.gl.GL_COLOR_BUFFER_BIT)
        glColor3f(self.ball.color[0], self.ball.color[1], self.ball.color[2
])
        circle.draw(GL_LINE_LOOP)

    def update(self, dt):
        self.ball.x += self.ballVelocity
        if self.ball.x > self.windowWidthPixels or self.ball.x < 0:
            self.ballVelocity *= -1


if __name__ == "__main__":
    PrimaryWindow()


-Thomas

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to pyglet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyglet-users/4b42d205-9190-4afc-b383-e74d1f896773%40googlegroups.com.

Reply via email to