Hello, I started playing around with Pyglet recently and it was going fine until I started trying to fill the screen with images. I ended up with an atrocious frame rate, to the point where user mouse clicks weren't working properly and animations looked really bad. In order to try to test the limitations, I created the following test game to see what would happen:
*import randomimport pygletfrom pyglet import gl* *class Game(object):* * width = 1000* * height = 600* * images = [* * {"filepath": "image100x100.jpeg", "count": 300}* * ]* * background_color = (0.3, 0.3, 0.3, 1)* * report_interval = 5.0* * def start(self):* * self.pyglet_window = pyglet.window.Window(width=self.width, height=self.height, vsync=False)* * self.pyglet_window.event(self.on_draw)* * self.initializeGL()* * self.reset_report_timer()* * self.initialize_sprites()* * pyglet.clock.schedule_interval(self.tick, 0.01)* * pyglet.app.run()* * def initialize_sprites(self):* * self.sprites = []* * for image_set in self.images:* * filepath = image_set["filepath"]* * count = image_set["count"]* * image = pyglet.image.load(filepath)* * for i in range(count):* * x, y = random.randint(0, self.width), random.randint(0, self.height)* * sprite = pyglet.sprite.Sprite(image, x=x, y=y)* * self.sprites.append(sprite)* * def print_report(self):* * print "======================="* * print " Call count: {}".format(self.num_calls)* * print " FPS: {}".format(self.num_calls / self.report_interval)* * def reset_report_timer(self):* * self.report_timer = 0.0* * self.num_calls = 0* * def initializeGL(self):* * gl.glEnable(gl.GL_TEXTURE_2D)* * gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_NEAREST)* * gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MIN_FILTER, gl.GL_NEAREST)* * gl.glEnable(gl.GL_BLEND)* * gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA)* * gl.glPushAttrib(gl.GL_ENABLE_BIT)* * def tick(self, seconds_passed):* * self.num_calls += 1* * self.report_timer += seconds_passed* * if self.report_timer >= self.report_interval:* * self.print_report()* * self.reset_report_timer()* * def on_draw(self):* * self.pyglet_window.clear()* * pyglet.gl.glColor4f(*self.background_color)* * pyglet.graphics.draw(4, pyglet.gl.GL_QUADS,* * ('v2i', (0, 0, self.width, 0, self.width, self.height, 0, self.height))* * )* * pyglet.gl.glColor4f(1, 1, 1, 1)* * self.draw_sprites()* * def draw_sprites(self):* * for sprite in self.sprites:* * sprite.draw()* *if __name__ == "__main__":* * game = Game()* * game.start()* I attached the file I used as well. The GL commands I used were designed to get pixel perfect graphics, and I set them up a long time ago and don't remember exactly what they do. If you think those are teh problem please let me know and I will test it out. The results were pretty crumby. I found that with 100 images I was sitting at about 60 fps, with 200 images I went down to 30 fps, with 300 images I was down to 20 fps. I wanted to test out some features like the atlas and resource packages, but I figured I would double check to make sure I am not making any obvious mistakes here. Can anyone confirm that the limitations I am experiencing are normal? If not, what can I try to get things working a bit better? My specs are: - MacBook Pro (15-inch, Mid 2012) - Processor - 2.6 GHz Intel Core i7 - Memory - 8 GB 1600 MHz DDR3 - Graphics - NVIDIA GeForce GT 650M 1024 MB -- 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 post to this group, send email to pyglet-users@googlegroups.com. Visit this group at https://groups.google.com/group/pyglet-users. For more options, visit https://groups.google.com/d/optout.