我尝试使用以下代码旋转一个简单的精灵:
test_img = pyglet.resource.image('img.png')
self.test_sprite = pyglet.sprite.Sprite(img=test_img,x=300,y=400, batch=self.main_batch)
def update(self, dt):
self.test_sprite.rotation -= float(100 * dt)
效果很好,但我看到它旋转时的神器,见下图,左边是静态图像,右边是旋转的那个:
我做了一个快速搜索,我在这里找到了关于它的讨论:
https://groups.google.com/forum/#!topic/pyglet-users/5NiNT1vRHGw
但说实话,我是pyglet的新手,我不知道如何修改上面的代码来删除神器。
更新
我使用以下代码解决了这个问题,但仍然不确定这是否是最好的方法:
test_img = pyglet.resource.image('img.png').get_texture()
glTexParameteri(test_img.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
glTexParameteri(test_img.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
self.test_sprite = pyglet.sprite.Sprite(img=test_img,x=300,y=400, batch=self.main_batch)
def update(self, dt):
self.test_sprite.rotation -= float(100 * dt)
答案 0 :(得分:0)
这不是编码问题,而是在您使用的纹理(图集)中的图像周围/之间没有安全边际。您应该在图片周围留一点边距(1个像素就足够了),这样样本过滤不会渗透到邻居,夹住或缠绕。
答案 1 :(得分:0)
老问题,没有upvote?这个问题通常被称为“纹理出血”。
如果有人磕磕绊绊需要解决方案,那么有一个GIMP插件可以处理这个以及边距: