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 scale
propriedade 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.texture
entã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
.