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
Nach der Anwendung