Estou tentando fazer a renderização independente de resolução de sprites em movimento em um jogo 2D. Meu plano é trabalhar em um sistema de coordenadas fixo no meu mundo (por exemplo, 960x540) e usar a projeção ortográfica para escalar isso para cima ou para baixo para se ajustar à janela de visualização. Eu faço letterboxing para lidar com diferentes proporções.
De acordo com a maioria dos tutoriais, sou livre para usar as dimensões que desejar para o modo de exibição de exibição, mas descobri que, em muitos casos, isso leva ao problema e acabo usando valores de subpixel na janela de exibição. Por exemplo, um vértice em (62,62) em um sistema de coordenadas de 960 x 540 termina em (51.6666667,51.6666667) em uma viewport com as dimensões 800 x 450.
Notei dois tipos de problemas com isso:
- a amostragem de textura muda o tempo todo para objetos que estão em movimento, dependendo de onde os vértices estão em relação ao centro de pixels
- meus objetos são esticados horizontalmente ou verticalmente por um pixel de vez em quando devido ao arredondamento
Qual é a melhor prática para evitar isso (mantendo a independência da resolução em termos de velocidade de movimento e assim por diante)? E onde seria o melhor lugar para resolver isso? Antes de passar os vértices para os sombreadores ou dentro do sombreador de vértices?