XNA Window Scaling Performance - PullRequest
       7

XNA Window Scaling Performance

1 голос
/ 19 августа 2010

В моей игре XNA я программирую и разрабатываю все это для разрешения 1920x1080, а затем масштабирую масштаб и почтовый ящик, чтобы соответствовать работающей системе (XBox или ПК).

Это было отличное решение, поскольку оно позволяетмне нужно беспокоиться только об одном разрешении.

Тем не менее, я теперь задаюсь вопросом, вернется ли это, чтобы укусить меня в будущем, когда игра станет более сложной.

Так как янеобходимость масштабировать все с каждым рисованием (я масштабирую SpriteBatch.Begin () с масштабным коэффициентом только один раз, выполняю все рисование, затем вызываю End ()), это окажет какое-либо негативное влияние на производительность?Я знаю, что XBox уже делает это для игр XNA для вас, когда изначально установлен на 720p (что, на самом деле, когда я работаю на XBox, он просто получает соответствующий коэффициент масштабирования) .... поэтому я не могу представить, что это слишком плохо,даже для ПК.

Ответы [ 2 ]

3 голосов
/ 19 августа 2010

Xbox выполняет масштабирование в специализированном скейлере в видеовыходе - ваше приложение не имеет никакой производительности.

Коэффициент масштабирования, который вы передаете SpriteBatch, просто переводит вершины вашего спрайта.Это делается с коэффициентом 1, даже если вы не передаете масштаб, поэтому там нет дополнительной нагрузки.

При разных размерах экрана будут разные скорости заполнения (больше или меньше пикселей) и поиск текстуртакже будет отличаться, поэтому будут отображаться некоторые отклонения.

Самое безопасное - использовать только буфер 1028x720.Xbox может аппаратно масштабировать это в ЛЮБОЕ разрешение или соотношение без единой строчки кода или каких-либо проблем.Это будет почтовый ящик правильно, а аппаратный скалер очень хорошего качества.Вы не можете утверждать, что поддержка 1080p на самом деле является единственным недостатком.

Если вы выбрали 1020x1080 в качестве заднего буфера, обратите внимание, что аппаратный масштабатор не может уменьшить его до 480i и БУДЕТ потерпеть неудачу в рецензировании (хорошо, если кто-то заметит)

В Windows проще всего, вероятно, нарисовать все в RenderTarget, а затем просто масштабировать всю проклятую вещь за один раз в конце.Посмотрите стартовый набор SpaceWar для нескольких строк кода, необходимых для этого.(Все внутри #if! XBOX, чтобы вы не теряли циклы, делая это на 360)

0 голосов
/ 19 августа 2010

Это не должно стоить вам.Масштабирование выполняется видеокартой.

Однако, если вас это беспокоит, другой вариант обработки разных разрешений - это изменить цель рендеринга на внеэкранный буфер, отрендерить его и затем нарисовать квадратна экране с буфером в качестве текстуры.Отрисовывается больше пикселей, но вам не нужно выполнять преобразование для каждой вершины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...