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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/pyglet-users/4b42d205-9190-4afc-b383-e74d1f896773%40googlegroups.com.