Depois de adicionar velocidade ao meu jogo, sinto que minhas texturas estão tremendo. Eu pensei que eram apenas meus olhos, até que finalmente capturei em uma captura de tela:
O da esquerda é o que renderiza no meu jogo; o da direita é o sprite original, colado. (Esta é uma captura de tela do Photoshop, ampliada em 6x.)
Observe que as bordas estão com alias - parece quase como renderização sub-pixel. De fato, se eu não tivesse forçado meus sprites (que têm posição e velocidade como ints) a desenhar usando valores inteiros, eu juraria que o MonoGame está desenhando com valores de ponto flutuante. Mas não é.
Qual poderia ser a causa dessas coisas parecerem borradas? Isso não acontece sem a velocidade aplicada.
Para ser mais preciso, minha SpriteComponent
turma tem um Vector2 Position
campo. Quando ligo Draw
, uso essencialmente new Vector2((int)Math.Round(this.Position.X), (int)Math.Round(this.Position.Y))
para a posição.
Eu já tinha um bug antes em que objetos estacionários tremiam - isso se deve ao fato de eu usar o Position
vetor direto e não arredondar os valores para ints
. Se eu usar Floor
/ em Ceiling
vez de redondo, o sprite afunda / paira (diferença de um pixel de qualquer maneira), mas ainda fica embaçado.