so, i may have made my reply too fast. mattis n, this works and is tested
on my system.
from pyglet.gl import *
import pyglet
def make_pixelated(sprite):
""" Make the goup of this sprite pixelated.
:param sprite: pyglet.sprite.Sprite
:return: None
"""
import types
def set_state(self):
glEnable(self.texture.target)
glBindTexture(self.texture.target, self.texture.id)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glEnable(GL_BLEND)
glTexParameteri(self.texture.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glBlendFunc(self.blend_src, self.blend_dest)
group = sprite._group
group.set_state = types.MethodType(set_state, group)
window = pyglet.window.Window()
image = pyglet.image.load("gold.jpg")
batch = pyglet.graphics.Batch()
sprite = pyglet.sprite.Sprite(image, batch=batch)
make_pixelated(sprite)
sprite.scale = 2
@window.event
def on_draw():
window.clear()
batch.draw()
pyglet.app.run()
I missed the part where it isn't the sprite that sets the state, it is the
group that it belongs to. What you see above is a hack that adds our
'pixelated render' to the group that renders the sprite. The correct was
of doing this isn't super obvious, due to how groups are created. this is
just works easier.
On Thursday, January 1, 2015 at 5:54:46 AM UTC-6, Salvakiya wrote:
>
> I am relatively new to python and am creating a game engine called PyGM. I
> am trying to create Game Maker logic in Python. I chose Pyglet to handle
> the graphics on this project however I have run into a few issues.
>
> The first issue was I could not scale a sprite without it becoming blurry
> due to the biliniar texture filtering. After some research I found a fix by
> using this code:
>
> def texture_set_mag_filter_nearest(texture):
> glBindTexture(texture.target, texture.id)
> glTexParameteri(texture.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
> glBindTexture(texture.target, 0)
>
> there is however another issue. The sprites look fine when scaled to a
> whole number but when scaling to anything else(like 2.5) produces strange
> results.
>
> Is there a way to fix this?
>
--
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 http://groups.google.com/group/pyglet-users.
For more options, visit https://groups.google.com/d/optout.