Dessinez des sprites non flous avec cocos2d / pyglet

Dans cocos2d ou pyglet, le paramètre de complément de la texture utilisée pour les sprites 2D semble être GL_LINEAR par défaut, et si vous découpez un rectangle d'une image avec des sprites disposés dans une tuile et que vous l'utilisez, le pixel adjacent sera un peu flou.

Eh bien, si vous effectuez un zoom avant et arrière sur le sprite, les limites ne seront pas floues, mais seul l'intérieur sera flou, et cela ressemblera à OpenGL. Je veux le faire en le divisant avec une image dentelée avec une sensation de 8 bits.

Il semble que vous devriez ajouter «GL_NEAREST» à «GL_TEXTURE_MAG_FILTER» et «GL_TEXTURE_MIN_FILTER» de la texture. Je l'attacherai quand je le chargerai.

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)

Cela ne brouillera pas les pixels.

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)

Les pixels à côté de la tuile ne s'échappent pas non plus.

Lors du chargement d'une carte de tuiles TMX, il semble que l'image est implicitement chargée et devient une texture distincte, appliquez-la donc à toutes les définitions de tuiles de l'ensemble de tuiles.

map_resource = cocos.tiles.load('fuga.tmx')
for res in map_resource.contents.values():
    if isinstance(res, cocos.tiles.TileSet):  #Ensemble de tuiles uniquement
        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)

Avant l'application screenshot-1451988721.png

Après application screenshot-1451988559.png

Recommended Posts

Dessinez des sprites non flous avec cocos2d / pyglet
Faire pivoter les sprites avec OpenCV
Dessinez la courbe de Bézier avec Go
Dessinez un graphique avec NetworkX
Dessinez bonjour le monde avec mod_wsgi
Dessiner un fichier netCDF avec python
Dessinez un graphique avec networkx