Eu tenho um conjunto de imagens de 8x8 pixels e quero redimensioná-las no meu jogo para que sejam o dobro (16x16 pixels, por exemplo, transformando cada pixel em um bloco 2x2). O que estou tentando obter é um Minecraft- como efeito, em que você tem pequenas imagens de pixel dimensionadas para pixels bloqueadores maiores.
No Pyglet, a scalepropriedade do sprite desfoca os pixels. Existe alguma outra maneira?
Código de trabalho:
Aqui está a solução que funciona (graças à persistência do DMan e ao insight de Jimmy):
image = resource.image('tileset.png')
texture = image.get_texture()
gl.glTexParameteri(gl.GL_TEXTURE_2D, gl.GL_TEXTURE_MAG_FILTER, gl.GL_NEAREST)
texture.width = 16 # resize from 8x8 to 16x16
texture.height = 16
texture.blit(100, 30) # draw
glEnable(GL_TEXTURE_2D). Então, digamos que você tenha telefonado para a = image.load('blah.jpg'). Atribua tex = a.textureentão glBindTexture(GL_TEXTURE_2D, texture.id)e finalmente uma chamada para pyglet.gl.glTexParameteri(pyglet.gl.GL_TEXTURE_2D, pyglet.gl.GL_TEXTURE_MIN_FILTER, pyglet.gl.GL_NEAREST). Eu não estou muito familiarizado com o espaço para nome do OpenGL em python, então deixei a chamada completa qualificada. Desde que importamos o OpenGL, acredito que você pode remover pelo menos o pyglet na frente e talvez também o gl .
glTexParameteri. O OpenGL 1/2 / ~ 3 no qual presumo que o Pyglet se baseia tenha esses comandos de modo imediato . Ou seja, você executa um comando para alterar o estado, depois tudo muda. Eu começaria movendo as chamadas por baixo das chamadas gl.
from pyglet.gl import *e, em seguida, fazer uma chamada para talisman.org/opengl-1.1/Reference/glTexParameter.html comGL_NEAREST.