Готовый перевод OGRE Manual / Руководство OGRE: 1.1 Object Orientation - more than just a buzzword
Название отражает суть. OGRE (Object-Oriented Graphics Rendering Engine) значит Объектно-ориентированный движок визуализации (рендеринга) графики, чем он по сути и является. Ладно, но почему? Зачем я взялся за это дело?
Сейчас графические движки походят на другие большие программные системы. Начинается всё с малого, а потом они раздуваются в чудовищные комплексы, в которых с первой попытки и не разберешься. Чертовски тяжело управлять системами таких размеров, а еще сложнее вносить изменения, что особо важно, когда новые техники и методы меняются каждую неделю. Построение систем вокруг громадных файлов, набитых си-функциями, уже не решает проблему -- даже если всё написано одиним человеком (что не желательно), уже через пару месяцев будет нереально найти неуловимые куски кода, особенно, если они перепутаны друг с другом.
Объектное ориентирование является очень популярным методом решения сложных проблем. Это шаг от неорганизованного кода к отдельным функциям, группировка функций и данных вместе внутри классов, которые разработаны для представления реальных идей. ООП позволяет вам скрыть сложность решения внутри понятных пакетов с концептуально простым интерфейсом, дающим ощущение кирпичиков, которые вы собираете вместе. Они легко организуются, давая похожие результаты на выходе, но пути их достижения могут разниться, уменьшая тем самым количество проблем для разработчиков, так как им приходиться изучать только один интерфейс.
Я не собираюсь учить вас ООП, -- это тема для отдельной книги. Но достаточно сказать, что я видел много успехов ООП в бизнес-системах и был удивлен тем, что большинство графического кода оказалось написано в стиле функций Си. Я заинтресовался, смогу ли я применить мой опыт разработок в других типах программого обеспечения, в области, которые долго занимали место в моём сердце -- движках трехмерной графики. Некоторые из тех, с кем я говорил, считали, что использование чистого C++ не будет достаточно быстрым для графических движков реального времени, но другие (включая и меня) придерживались мнения, что, при должном внимании, объектно-ориентированная структура можеть быть эффективной. Мы оказались правы.
В кратце, вот преимущества объектно-ориентированного подхода, примененного в OGRE:
Абстракция.
Стандартные интерфейсы скрывают различия между реализациями трехмерного API и операционными системами.
Инкапсуляция.
Набор системы управления и контекстно-специфичных действий, собраный в графическом движке. Инкапсуляция позволила мне разместить код и данные там, где они используются, что делает код четким и простым для понимания, и более надежным из-за отсутсвия дублирования.
Полиморфизм.
Поведение методов меняет зависимости типов объектов, которые вы используете, даже если вы знакомы только с одним интерфейсом, например, специальный класс для управления внутренними бесперебойными уровнями полностью отличается от стандартного менеджера сцен, но выглядит идентично другим классам в системе и вызывается теми же методами
Переведено на Нотабеноиде
http://notabenoid.org/book/137/1509
Переводчики: jfox
Настройки
Готово:
