I apologize for the delay, I didn't really check back here after there wasn't much activity for a few weeks and figured I wouldn't be able to do what I needed.
Thanks for taking the time to test this! I did not realize the sprite group resets things as well. I did try it and it does seem a lot better than what I had implemented. However, the same alpha issues do arise; some things on the same z level will have proper alpha while other objects may not. I did have to change to 0.1 instead of 0.5 for it to even show up at all. I suspect this might be part of the opacity stuff you were talking about. On Friday, September 30, 2016 at 9:30:19 AM UTC-5, Benjamin Moran wrote: > > Hi Charles, > > I have a zsprite branch (that probably has the same changes that you've > already made) that can be found here: > https://bitbucket.org/treehousegames/pyglet/branch/z_sprite > > The OpenGL blending/code you posted looks fine, but it might be getting > overridden by the SpriteGroup (pyglet.sprite.SpriteGroup) . My branch is > not yet complete, but I've also modified the SpriteGroup class so that it's > at least working OK for me. it only works right for simple > transparent/solid alpha (not opacity), but it does render all sprites in > the correct z order. Give it a try and see if it works for you. The z > scale is set to be from -255 to 255. > > I will probably fix the opacity stuff at some point... > > > > On Thursday, September 1, 2016 at 8:28:43 AM UTC+9, Charles wrote: >> >> I am using a standard blending of GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA. >> Here is an example of what doesn't work: >> >> import pyglet, random >> from pyglet.gl import * >> >> window = pyglet.window.Window(800,600, vsync=False) >> >> fps = pyglet.clock.ClockDisplay() >> >> groups = [] >> group = pyglet.graphics.Group() >> >> tileImages = [pyglet.image.load("tile_test.png")] >> >> batch = pyglet.graphics.Batch() >> >> fadedImage = pyglet.image.load("wide-shadow-faded.png").get_texture() >> playerImage = pyglet.image.load("player.png").get_texture() >> treeImage = pyglet.image.load("tree.png").get_texture() >> >> >> glEnable(GL_DEPTH_TEST) >> glEnable(GL_BLEND) >> glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) >> glAlphaFunc ( GL_GREATER, 0.1 ) ; >> glEnable ( GL_ALPHA_TEST ) ; >> >> tiles = [] >> for i in range(40): >> for j in range(40): >> tile = pyglet.sprite.Sprite(random.choice(tileImages), >> batch=batch, x=i*24, y=j*24, usage='static', group=group, subpixel=True) >> tiles.append(tile) >> >> print len(tiles) >> >> >> player = pyglet.sprite.Sprite(playerImage, batch=batch, group=group, >> x=10, y=10, z=0.3, subpixel=True) >> >> tree = pyglet.sprite.Sprite(treeImage, batch=batch, group=group, x=30, >> y=30, z=0.5, subpixel=True) >> >> fadedSprite = pyglet.sprite.Sprite(fadedImage, batch=batch, group=group, >> x=100, y=100, z=0.5, subpixel=True) >> >> >> @window.event >> def on_draw(): >> window.dispatch_events() >> window.clear() >> batch.draw() >> fps.draw() >> >> pyglet.app.run() >> >> >> >> The 'fadedImage' is basically just any image that has pixels of alpha >> between 0 and 1 like a fade. If you take out the player and sprite, it may >> sometimes show up properly, but if you reload it may change to all black, >> it's never consistent. >> >> >> On Tuesday, August 30, 2016 at 11:53:29 PM UTC-5, magu...@gmail.com >> wrote: >>> >>> In what way are you blending objects? The source of that issue could be >>> a number of things, could you provide a working example? Generally you >>> should only have to update each visible objects vertices and Z axis every >>> update cycle. >>> >>> Also, you can increase the depth range of the Z axis by setting up a >>> custom config: >>> >>> config = Config(sample_buffers=1, samples=4, depth_size=1000, >>> double_buffer=True) >>> >>> class Example(pyglet.window.Window): >>> def __init__(self): >>> super(Example, self).__init__(640, 480, resizable=True, >>> fullscreen=False, caption="Example", config=config) >>> >>> >>> -- 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.