Я пытаюсь сделать независимый от разрешения рендеринг движущихся спрайтов в 2D игре. Мой план - работать в фиксированной системе координат в моем мире (например, 960x540) и использовать ортогональную проекцию, чтобы масштабировать ее вверх или вниз, чтобы соответствовать области просмотра. Я делаю почтовый ящик для обработки различных форматов изображения.
Согласно большинству учебных пособий, я могу свободно использовать любые размеры, которые мне нравятся, для усадки вида, но я обнаружил, что во многих случаях это приводит к проблеме, в результате которой я использую субпиксельные значения в области просмотра. Например, вершина в (62,62) в системе координат 960 x 540 заканчивается в (51.6666667,51.6666667) в области просмотра с размерами 800 x 450.
Я заметил два вида проблем с этим:
- выборка текстуры все время изменяется для объектов, которые находятся в движении, в зависимости от того, где вершины расположены относительно центра пикселей
- мои объекты растягиваются по горизонтали или вертикали на пиксель время от времени из-за округления
Как лучше всего избегать этого (сохраняя независимость от разрешения с точки зрения скорости движения и т. Д.)? И где будет лучшее место, чтобы сделать это? Перед передачей вершин в шейдеры или внутри вершинного шейдера?