actually, if I do cb.image_data.format = 'RGB' and then print cb.image_data.format
I get: 'RGBA' :/ On Mar 3, 5:57 pm, Philippe <[email protected]> wrote: > thank you ! > In my case, I need to convert to RGB. > > I went into pyglet.image.codecs.pil > and there, I forced format = 'RGB' in PILImageEncoder.encode() > the result was good. > but the way to do it, not really clean... > > then, I tried to do that: > mgr = pyglet.image.get_buffer_manager() > encoder = pyglet.image.codecs.pil.PILImageEncoder() > cb = mgr.get_color_buffer() > cb.image_data.format = 'RGB' > cb.save(file, encoder=encoder) > > but the result was like before. a "double alpha" > > On Mar 3, 5:24 pm, Tristam MacDonald <[email protected]> wrote: > > > On Wed, Mar 3, 2010 at 11:07 AM, Philippe <[email protected]> wrote: > > > can you tell a bit more about the "blending equations" ? > > > I have no idea where to look for that and how I can use it to solve > > > my problem. > > > I think you had better explain exactly what you are trying to achieve, > > because the problem isn't entirely trivial to solve. > > > For repeated blending to work correctly, the alpha values of incoming > > fragments have to be combined with the alpha values already in the > > framebuffer: > > - In your case, I believe that you start by rendering an opaque background, > > which will fill the backbuffer with alpha values of 1.0 > > - Then you render a sprite with 50% transparency (i.e. alpha = 0.5) over the > > opaque background. > > - This will result in the alpha values being multiplied, and 1.0 * 0.5 = > > 0.5, so the resulting value in the backbuffer will be 0.5, and your > > screenshots will come out partially transparent wherever you rendered a > > sprite. > > > If you don't want your resulting screenshot to have transparent areas, just > > don't save the alpha channel (i.e. convert to RGB). Note that this won't > > affect the rendered transparency in any way, because the colours have > > already been blended in the framebuffer. > > > If you do want the image to retain proper transparency, then disable > > blending, render the background with alpha=0.0, and re-enable blending > > before rendering sprites. > > > -- > > Tristam MacDonaldhttp://swiftcoder.wordpress.com/ -- You received this message because you are subscribed to the Google Groups "pyglet-users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/pyglet-users?hl=en.
