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.

Reply via email to