Приходится выполнять промежуточный вызов фабрики классов из-за того, что оператор new не может создать объект по переданной ему строке текста или константе GUID. Ему нужен тип данных. Фабрика классов сравнивает полученный Инициализация DirectX

GUID с одним из известных ей типов классов и выполняет new, передавая оператору тип создаваемого объекта.

В заключение следует отметить, что в модели СОМ интерфейсы являются неизменными составляющими компонентного объекта. Это хорошо видно на примере реализованной в виде СОМ-объектов библиотеки DirectX. Достаточно установить девятую версию библиотеки, чтобы обеспечить работу приложения, использующего для вывода примитивов командный буфер третьей версии. Это означает, что в библиотеке сохраняются и регистрируются в реестре интерфейсы всех предыдущих версий.

Если после предъявления объекта к тиражированию разработчик производит его модификацию, то изменения не должны затрагивать существующих интерфейсов. При необходимости добавления нового метода или изменения набора параметров существующего метода в объект должен включаться новый интерфейс. В результате, если приложение использует СОМ-объект и переносится на другой компьютер, где установлена более новая версия объекта, то оно все равно сохранит работоспособность.

Однако и здесь возникают некоторые проблемы, не предусмотренные стандартом. Так, после установки SDK версии 8 старые программы работают, но если попытаться при разработке новых программ получить интерфейсы шестой версии, то ничего не получится. Старые интерфейсы сохранились в dll-файле, но их шаблоны исключены из заголовочных h-файлов. Так что в этом случае разработчики нарушили если не букву, то дух стандарта. Из данного затруднения можно выйти, если найти и переписать папки INCLUDE и LIB от SDK шестой версии. После этого можно будет разрабатывать приложения, использующие требуемый интерфейс.

Инициализация DirectX

Библиотеки OpenGL и DirectX предназначены для решения одного класса задач и потому имеют много общего не только в организации интерфейса с приложением, но и в терминологии и даже в названиях переменных, констант и функций. Но язык OpenGL как широко распространенный межплатформенный стандарт должен быть унифицированным и опираться на возможности, общие для разных типов компьютеров. Кроме того, ему должна быть свойственна определенная консервативность и новые тенденции в развитии функциональных возможностей графических систем и технологии программирования могут с запаздыванием отражаться в этом языке.


⇐ Предыдущая| |Следующая ⇒