Sto cercando di eseguire il rendering indipendente dalla risoluzione degli sprite in movimento in un gioco 2D. Il mio piano è lavorare in un sistema di coordinate fisso nel mio mondo (ad esempio 960x540) e utilizzare la proiezione ortografica per ridimensionarla su o giù per adattarla alla finestra. Faccio letterboxing per gestire diverse proporzioni.
Secondo la maggior parte dei tutorial, sono libero di usare qualsiasi dimensione mi piaccia per il frustum della vista, ma ho scoperto che in molti casi ciò porta al problema che finisco per usare i valori subpixel sul viewport. Ad esempio un vertice in (62,62) in un sistema di coordinate di 960 x 540 finisce in (51.6666667,51.6666667) su una finestra con le dimensioni 800 x 450.
Ho notato due tipi di problemi con questo:
- il campionamento delle trame cambia continuamente per gli oggetti che sono in movimento a seconda di dove si trovano i vertici rispetto al centro di un pixel
- i miei oggetti vengono allungati di tanto in tanto in senso orizzontale o verticale a causa di arrotondamenti
Qual è la migliore pratica per evitarlo (mantenendo l'indipendenza di risoluzione in termini di velocità di movimento e così via)? E dove sarebbe il posto migliore per fare questo? Prima di passare i vertici agli shader o all'interno del vertice shader?