That may be more of an OpenGL question, and may have to do with rendering 
orders in memory. Unfortunately I can't offer much more than that having 
not played with depth testing to any great degree. From the tests i've 
done, provided I stay within the depth ranges of 1.0 - 0.0, it seems to 
render layers and alpha blending fine. Depending on your needs that may be 
enough, but otherwise unless someone else happens along with a more clear 
answer, you may want to start looking into lower level OpenGL calls.

Here's the current test script (assuming the images already have 
transparency applied):

import pyglet
from pyglet.gl import *

class group(pyglet.graphics.OrderedGroup):
    def set_state(self):
        if self.order == 0:
            glBindTexture(GL_TEXTURE_2D, texture.id)
        elif self.order == 1:
            glBindTexture(GL_TEXTURE_2D, texture2.id)

window = pyglet.window.Window(640,480)

glEnable(GL_DEPTH_TEST)

gl.glEnable(GL_BLEND)
gl.glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

glEnable(GL_ALPHA_TEST)
glAlphaFunc(GL_GREATER, .1)

rendered_sprites = []

batch = pyglet.graphics.Batch()

batch_idle = pyglet.graphics.Batch()

texture = pyglet.image.load('test3.png').get_texture()

texture2 = pyglet.image.load('test4.png').get_texture()

background = pyglet.image.load('background.png').get_texture()

rendered_sprites.append(batch.add(4, GL_QUADS, group(0),
                                  ('v3f/static', (0.0,0.0,0.1, 32.0,0.0,0.1, 
32.0,32.0,0.1, 0.0,32.0,0.1)),
                                  ('t3f/static', texture.tex_coords)))

rendered_sprites.append(batch.add(4, GL_QUADS, group(1),
                                  ('v3f/static', (16.0,0.0,0.1, 48.0,0.0,0.1
, 48.0,32.0,0.1, 16.0,32.0,0.1)),
                                  ('t3f/static', texture2.tex_coords)))


@window.event
def on_draw():
    window.clear()
    background.blit(0,0)
    glEnable(GL_TEXTURE_2D)
    batch.draw()
    glDisable(GL_TEXTURE_2D)

@window.event
def on_key_press(symbol,modifiers):
    if symbol == pyglet.window.key.SPACE:
        if round(rendered_sprites[1].vertices[2],2) == 0.1:
            for a in xrange(2,12,3):
                rendered_sprites[1].vertices[a] = 1.0
        else:
            for a in xrange(2,12,3):
                rendered_sprites[1].vertices[a] = 0.1

pyglet.app.run()


-- 
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 post to this group, send email to [email protected].
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