Python Arcade Library(Pyglet)でドット絵をきれいに拡大する
※ぴぽや様(https://pipoya.net/) のハロウィンキャラクターの素材を利用しています。
問題
Python Arcade Library(Pyglet)では、スプライトを描画する時に使われるフィルターがデフォルトではLINEAR
になっているため、ドット絵を拡大して使いたい場合にぼやけてしまいます。
import arcade
class MyGame(arcade.Window):
def __init__(self):
super().__init__(800, 600, "LINEAR")
arcade.set_background_color(arcade.color.AMAZON)
def setup(self):
self.player_list = arcade.SpriteList()
for j in range(3):
for i in range(3):
player_texture = arcade.load_texture(
file_name="majo.png", x=32*i, y=0, width=32, height=32)
player_sprite = arcade.Sprite(
center_x=150+250*i, center_y=50+200*j, scale=3**j)
player_sprite.texture = player_texture
self.player_list.append(player_sprite)
def on_draw(self):
arcade.start_render()
self.player_list.draw()
def on_update(self, delta_time):
pass
window = MyGame()
window.setup()
arcade.run()
対処法
フィルターをインポートしてdraw
の引数にNEAREST
のフィルターを指定してあげるときれいに表示されます。
import arcade
from pyglet.gl import GL_NEAREST
class MyGame(arcade.Window):
def __init__(self):
super().__init__(800, 600, "NEAREST")
arcade.set_background_color(arcade.color.AMAZON)
def setup(self):
self.player_list = arcade.SpriteList()
for j in range(3):
for i in range(3):
player_texture = arcade.load_texture(
file_name="majo.png", x=32*i, y=0, width=32, height=32)
player_sprite = arcade.Sprite(
center_x=150+250*i, center_y=50+200*j, scale=3**j)
player_sprite.texture = player_texture
self.player_list.append(player_sprite)
def on_draw(self):
arcade.start_render()
self.player_list.draw(filter=GL_NEAREST)
def on_update(self, delta_time):
pass
window = MyGame()
window.setup()
arcade.run()
参考
Author And Source
この問題について(Python Arcade Library(Pyglet)でドット絵をきれいに拡大する), 我々は、より多くの情報をここで見つけました https://qiita.com/3w36zj6/items/fec0c291b4ee9a8fb384著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .