Oh, and if you send the original source image for the sprite, it would
help in confirming the source of the problem and I could give you an
example of the workaround

On Sat, Aug 20, 2011 at 10:47 AM, Brian Fisher <[email protected]> wrote:
> Having quality drop with rotation is perfectly normal - it's expected
> it would get a little blurry.
>
> Maybe you are referring to the white halo you are getting around the
> character (which perceptually makes the character appear darker)?
>
> I think you're getting that because the "transparent" pixels around
> the outside of the character are colored white. You should get the
> same problem if you did sub-pixel positioning or scaling. White halos
> on transforms is an artifact of bilinear filtering with RGBA as color
> & opacity and white transparent pixels with a blend mode of:
>
>  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
>
> Basically it needs to resample pixels in order to rotate, and when it
> resamples the values at the edge:
>
> (YourRGB, 1 alpha)
> (White, 0 alpha)
>
> for a 50% split, the bilinear filter math produces a color value of:
>
> ((YourRGB + White)/2, .5 alpha)
>
> and then when that is rendered, it renders it as your color averaged
> with white at 50% opacity, which is why you see a white halo.
>
>
> The artist hack fix for the problem is to bleed out the color channel
> over the transparent area - so like if the players shirt is red,
> they'd paint a bunch of red transparent pixels out from the shirt. If
> you have an editor that lets you edit RGB seperate from alpha, then go
> into RGB mode with the art for this sprite, and you should see all the
> surrounding white. If you then paint out the player color around it,
> and use that image, you should see the halo disappear.
>
>
> The correct programmer fix for this however is to switch to having
> textures use premultiplied alpha (basically RGB is replaced with
> RGB*Alpha), and also changing blend mode to:
>
> glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
>
> that is the correct way to render textures using bilinear filtering,
> and it's immune to this effect. But your textures and blend mode need
> to match, and I don't know how to do this with pyglet.
>
> On Sat, Aug 20, 2011 at 10:07 AM, [email protected] <[email protected]> wrote:
>> Every time I rotate a sprite by 45 degrees, it looses quality. Click here
>> for a screenshot.
>>
>> --
>> 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.
>>
>

-- 
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.

Reply via email to