Estoy tratando de hacer una representación independiente de la resolución de sprites en movimiento en un juego 2D. Mi plan es trabajar en un sistema de coordenadas fijo en mi mundo (por ejemplo, 960x540) y usar proyección ortográfica para escalarlo hacia arriba o hacia abajo para que se ajuste a la ventana gráfica. Hago letterboxing para manejar diferentes relaciones de aspecto.
De acuerdo con la mayoría de los tutoriales, soy libre de usar cualquier dimensión que me guste para la vista frustum, pero descubrí que en muchos casos eso lleva al problema de que termino usando valores de subpíxeles en la ventana gráfica. Por ejemplo, un vértice en (62,62) en un sistema de coordenadas de 960 x 540 termina en (51.6666667,51.6666667) en una ventana con las dimensiones 800 x 450.
Noté dos tipos de problemas con eso:
- el muestreo de textura cambia todo el tiempo para los objetos que están en movimiento, dependiendo de dónde estén los vértices en relación con un centro de píxeles
- mis objetos se estiran horizontal o verticalmente por un píxel de vez en cuando debido al redondeo
¿Cuál es la mejor práctica para evitar esto (mientras se mantiene la independencia de resolución en términos de velocidades de movimiento, etc.)? ¿Y dónde sería el mejor lugar para hacer frente a esto? ¿Antes de pasar los vértices a los sombreadores o dentro del sombreador de vértices?