Готовый перевод OGRE Manual / Руководство OGRE: 2. The Core Objects
Это пособие дает Вам краткий обзор объектов ядра OGRE и их назначение.
Немного о пространстве имен
OGRE использует характерную черту с++, называемую пространством имен. Оно позволяет разместить классы, перечисления, структуры, все что в принципе вписывается в область пространства имен. А это кратчайший путь к предотвращению конфликта имен, т.е. ситуации, когда два объекта называются одинаково. Учитавая, что OGRE был разработан для использования внутри других приложений, я хотел быть уверен, что проблемы конфликта имен не возникнет. Некоторые используют префиксы в именах своих классов потому, что есть компиляторы, не поддерживающие пространство имен, но я решил его применить, так как это правильнее. Сожалею, если у Вас такой непослушнай компилятор, но ребята... Стандарт языка был определен в течении многих лет, так что создателям компиляторов нечем оправдаться. Если Ваш компилятор не поддерживает пространство имен, то скорее всего он дерьмовый. Возьмите какой-нибудь по-лучше. :wink:
Каждый класс или тип должен содержать префикс Orge::, например, Orge::Camera, Orge::Vector3 и так далее, это значит, что если где-то в вашем приложении вам потребуется тип Vector3, конфликт имён не возникнет. Чтобы не печатать лишнего кода, можете добавить объявление use namespace Ogre::, тогда Вам будет не нужно набирать прификс, за исключением двусмысленных ситуаций, когда имеется другое описание с таким же именем.
Обзор с высоты 3000 метров
Ниже показана диаграмма некоторых объектов ядра и их расположение на общей схеме. Это вовсе не все классы, просто несколько примеров наиболее значащих, чтобы дать Вам идею их взаимодействия.
(картинка)
На самом верху диаграммы расположен объект root (корень). Это Ваш вход в систему, и это здесь Вам следует стремиться создавать объекты верхнего уровня, которые Вам понадобятся, такие как менеджеры сцен, системы и окна визуализации, загрузка плагинов, все фундаментальное. Если не знаете, где начать, root подойдет почти для всего, хотя обычно это всего лишь даст Вам новый объект, который и будет выполнять указанную работу, а root в большей степени организатор и посредник.
Большинство из остальных классов Ogre делятся на три роли:
Управление сценой
Описание содержимого Вашей сцены, её структуры, отображение через камеры и т.д. Объекты этой области призваны предоставить Вам естественный интерфейс объявлений для создаваемого Вами мира. Только Вы говорите OGRE не: "Выставь вот такие состояния визуализации и отобрази три полигона.", а говорите: "Хочу объект тут, там и вот здесь, с такими-то текстурами, отобразить вот с этого места." и даете команду на выполнение.
Управление ресурсами
Любой визуализации нужны ресурсы, будь то геометрия, текстуры, шрифты или что-то иное. Важно управлять загрузкой, повторным использованием и выгрузкой всех этих объектов с должным вниманием, чем и занимаются классы в этой области.
Визуализация
Ну и наконец, здесь мы получаем картинку на экране. Тут содержатся нижний уровень конвейера визуализации, характерные объекты API системы визуализации, такие как буферы, состояния визуализации и модуль, направляющий все это на конвейер. Классы подсистемы управлениями сценами используют функции этого модуля для доставки их высокоуровневой информации о сцене на экран.
Вы заметите, что тут разбросана уйма плагинов. OGRE разработан расширяемым, а плагины - обычный путь расширяемости. Многие классы OGRE могут быть дополнены подклассами и расширены, как то организация сцены с использованием специального менеджера сцен, добавление новой реализации системы визуализации (например, Direct3D или OpenGL), или предоставление возможности загрузки ресурсов из другого источника (скажем, из Интернета или базы данных)/ Опять же это лишь малая часть того, что могут дать плагины, но как Вы видите, они могут быть подключены почти к любому аспекту системы. Таким образом, OGRE не является решением какой-то одной четко поставленной задачи, его можно расширить и приспособить к любым Вашим нуждам.
Переведено на Нотабеноиде
http://notabenoid.org/book/137/1511
Переводчики: jfox, seaman, Alexei_987
Настройки
Готово:
