3D-данные: масштаб в BLL или в пользовательском интерфейсе? - PullRequest
0 голосов
/ 23 декабря 2011

Я занимаюсь разработкой симулятора трехмерного мира (www.athpro.com), и внутренне он обрабатывает все игровые тайлы (гексы) размером 1,0 x 1,0 единица измерения. Пользовательский интерфейс полностью отделен и отвечает за «масштабирование» данных. Мировые данные аналогичны векторному изображению. Теперь у меня есть помощник, который берет данные мира и передает их в пользовательский интерфейс для рендеринга. Я задаюсь вопросом ... было бы проще ... и более разумно, чтобы Помощник также не знал о масштабах и оставлял масштабирование исключительно на плечах пользовательского интерфейса?

В XNA вы можете просто визуализировать все в собственном масштабе (1x1) (что, вероятно, будет намного меньше, чем вы хотели бы для своего игрового мира) и использовать матричное преобразование, чтобы масштабировать его до любого желаемого вами фактора. за один проход, верно? Это одна из причин, по которой я думаю оставить это в интерфейсе.

Это также помогает Helper намного чище, чтобы он не масштабировал каждый вектор и т. Д. Все объекты передаются через интерфейсы со свойствами get-only, поэтому в моей DLL-библиотеке Helper мне нужно создавать реализации каждого по порядку. просто увеличить его значения. Похоже, много беспорядка и накладных расходов на то, что может быть проще в пользовательском интерфейсе.

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

Спасибо!

1 Ответ

0 голосов
/ 23 декабря 2011

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

Вам не нужно манипулировать координатами / масштабом каждого объекта, когда вы рисуете, просто используйте одно матричное преобразование при рисовании ваших объектов.

...