[PYTHON] Zeichne unscharfe Sprites mit cocos2d / pyglet

In cocos2d oder pyglet scheint der Komplementparameter der für 2D-Sprites verwendeten Textur standardmäßig "GL_LINEAR" zu sein. Wenn Sie ein Rechteck aus einem Bild mit in einer Kachel angeordneten Sprites ausschneiden und verwenden, wird das benachbarte Pixel ein wenig unscharf.

Wenn Sie das Sprite vergrößern und verkleinern, werden die Grenzen nicht verwischt, sondern nur das Innere und es sieht aus wie OpenGL. Ich möchte es schaffen, indem ich es durch ein gezacktes Bild mit einem Gefühl von 8 Bit teile.

Es scheint, dass Sie "GL_NEAREST" zu "GL_TEXTURE_MAG_FILTER" und "GL_TEXTURE_MIN_FILTER" der Textur hinzufügen sollten. Ich werde es anhängen, wenn ich es lade.

image = pyglet.image.load('hoge.png')
glBindTexture(image.texture.target, image.texture.id)
glTexParameteri(image.texture.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
glTexParameteri(image.texture.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST)

sprite = Sprite(image.texture)

Dadurch werden die Pixel nicht verwischt.

sprite1 = Sprite(image.texture.get_region(0, image.height - 32, 32, 32))
sprite2 = Sprite(image.texture.get_region(32, image.height - 32, 32, 32))
actor_layer.add(sprite1)
actor_layer.add(sprite2)

Die Pixel neben der Kachel sickern auch nicht heraus.

Beim Laden einer TMX-Kachelzuordnung scheint das Bild implizit geladen zu sein und wird zu einer separaten Textur. Wenden Sie es daher auf alle Kacheldefinitionen im Kachelsatz an.

map_resource = cocos.tiles.load('fuga.tmx')
for res in map_resource.contents.values():
    if isinstance(res, cocos.tiles.TileSet):  #Nur Fliesensatz
        for tile in res.values():
            glBindTexture(tile.image.texture.target, tile.image.texture.id)
            glTexParameteri(tile.image.texture.target, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
            glTexParameteri(tile.image.texture.target, GL_TEXTURE_MAG_FILTER, GL_NEAREST)

Vor der Anwendung screenshot-1451988721.png

Nach der Anwendung screenshot-1451988559.png

Recommended Posts

Zeichne unscharfe Sprites mit cocos2d / pyglet
Sprites mit OpenCV drehen
Zeichnen Sie die Bezier-Kurve mit Go
Zeichnen Sie mit NetworkX ein Diagramm
Zeichne Hallo Welt mit mod_wsgi
Zeichnen Sie eine netCDF-Datei mit Python
Zeichnen Sie mit networkx ein Diagramm