Pergunta

Eu estou usando Löve2D para escrever um pequeno jogo. Löve2D é um motor de jogo de código aberto para Lua. O problema que eu estou encontrando é que algum filtro antialias é aplicada automaticamente aos seus sprites quando você desenhá-lo em posições não-inteiros.

love.graphics.draw( sprite, x, y )

Assim, quando x ou y não é redondo (por exemplo, x = 100,24), o sprite aparece desfocada. O mesmo acontece quando o tamanho do sprite não é mesmo, porque (x, y) aponta para o centro da Sprite. Por exemplo, um sprite que é 31x30 grande irá aparecer borradas novamente, porque seus pixels são pintadas em posições não-inteiros.

Desde que eu estou usando a arte pixel, eu quero evitar isso todo o caminho, caso contrário, a arte é destruída por este efeito. A solução que eu estou usando até agora é para forçar as coordenadas para ser rodada por jogar lixo o código com chamadas para Math.floor (), e forçando todos os sprites ter ainda tamanhos, adicionando uma linha ou coluna de pixels transparentes com o programa de pintura , se necessário.

Existe algum comando para desativar o anti-serrilhamento, eu posso ligar no arranque do programa?

Foi útil?

Solução 3

No caso alguém estiver interessado, eu tenho pedido em outros lugares e descobri que o que eu estou pedindo, é solicitada como recurso: http://love2d.org/forum/tracker.php?p=2&t=7

Assim, a versão atual do amor que eu estou usando (0.5.0) ainda não permite desativar o filtro antialias, mas o recurso já está na versão SVN do motor.

Outras dicas

Se você desligar anti-aliasing você só vai ficar aliasing, daí o nome! Por que você está desenhando em posições não-integrais, eo que você quer fazer sobre essas partes fracionárias? (Round-los para o valor mais próximo? Truncar-los? E se eles são negativos?)

Pessoalmente eu gostaria de deixar o nível gráficos baixos sozinho e alterar seu código para acessores de uso para x e y que executam o arredondamento ou truncamento de que necessita. Isso garante suas extremidades pixel art-se desenhado em limites inteiro, mantendo o anti-aliasing em que você pode precisar mais tarde.

Outra torno trabalho possível pode ser a utilização Math.floor () para arredondar os números inteiros como uma solução barata.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top