Смекни!
smekni.com

Интерфейс приложений DirectX и графическая библиотека OpenGL (стр. 3 из 5)

На первый взгляд, игры образца 2000 года и те, в которые мы играем сегодня, различаются очень существенно. В современных RTS, например, количеству высокополигональных моделей может позавидовать любой шутер начала века. Насколько это повлияло на восприятие игроков? Трудно сказать. Напрямую такие вещи, как содержание игры и ее технологическая упаковка, едва ли сопоставимы. Но для объективной оценки можно принять такую формулу: игровой опыт, получаемый игроком / технологические параметры игры.

Это отношение для игр нынешних и пятилетней давности примерно одинаково. Что означает спокойное развитие без резких скачков и провалов. Да, есть место вопросам и сомнениям. Изображение на экране мониторов так быстро хорошеет, что позволяет говорить о приближении того времени, когда игровая картинка будет мало отличаться от реального видео. Однако не стоит забывать, что фотореалистичность достигается не только и не столько повышением числа полигонов на квадратный миллиметр сцены, но упорной и кропотливой работой дизайнеров. Если в самых первых шутерах было достаточно одной текстуры 64х64 на весь коридор, то теперь надо вручную красить панель за панелью. Можно даже сказать, что рост технологических возможностей влечет усложнение отделочных работ. Поэтому приведенная выше формула остается практически неизменной.

Дизайн, цвето-архитектурное решение окружающего игрока пространства оказывает не меньшее, а то и большее влияние на уровень его immersion’а, нежели технологические параметры изображения. Кстати говоря, в ближайшем будущем игры не смогут достичь настоящей фотореалистичности. Усложнение игровой картинки имеет вполне объективный предел роста. Когда полностью оформить коридор в виртуале станет сложнее, чем в реале, этот предел будет достигнут.

4 Интерфейс приложений DirectXи графическая библиотека OpenGL

4.1Что такое – DirectX?

DirectX – это набор API (Application Programming Interface, Интерфейс программирования приложений), разработанный специально для простого решения задач, связанных с разработкой игровых систем и видеопрограммирования. Наиболее широко распространяется использование DirectX в разработке игр. Для начинающих пользователей ПК проще сказать, что DirectX значительно облегчает труд разработчков игр, так как им больше не приходится создавать стандартные процессы обработки видео и звука, они складывают их из уже заготовленных функций этой утилиты.

DirectX разделяется на ряд программных объектов, среди которых выделим DirectX Graphics – набор интерфейсов для обработки и последующего графики, DirectInput – интерфейс, используемый для обработки данных, поступающих с клавиатуры, мыши, джойстика и пр. игровых контроллеров, DirectPlay – интерфейс сетевой коммуникации игр, DirectSound и DirectMusic – интерфейсы для работы со звуком, DirectSetup – часть, ответственная за установку DirectX, Direct Media Objects – реализует функциональную поддержку потоковых объектов.

Естественно, на ряду с развитием технологий аппаратного обеспечения (видеокарт), развивается и программное, в лице DirectX. Выходят новые версии, оснащенные новыми возможностями, все чаще выходят дополнения, включающие незначительные изменения и так далее. Новые продукты выходят, в основном в комплекте с операционной системой Microsoft Windows. Так, в поставку Windows XP входила 9 версия DirectX, а вот в новой Windows Vista – включена 10, на сегодняшний день последняя версия. К ее выпуску компания Microsoft готовилась очень тщательно, поэтому в нем используется отличная от DirectX 9 модель управления.

4.2DirectX 9

Большая часть функциональности девятой и предыдущих версий DX строится на основе COM объектов, доступ к которым мы получаем через интерфейсы. Если коротко –COM модель представляет собой более жесткое определение объектно-ориентированной модели. С COM объектами мы работаем только через интерфейсы. Каждая компонента DirectX будь то, к примеру, DirectInput или DirectSound содержит некоторое количество интерфейсов с использованием функций которых мы получаем доступ к возможностям объекта. Грубо говоря, интерфейс представляет собой класс, содержащий в себе указатели на функции, с помощью которых и происходит взаимодействие с объектом.

Этой версии разработчикам доступен HLSL (High-LevelShaderLanguage) – высокоуровневый язык работы с шейдерами. В качестве его альтернативы можно вспомнить соответствующее предложение от NVidia, а именно Cg. Сложно предсказать дальнейшее развитие обоих языковых платформ. Скорее всего, оба языка будут существовать и продолжать развиваться, как и в случае D3DvsOpenGL. Хотя в данном случае за спиной Cg стоит только NVidia. Программно реализована поддержка второй и третьей версии пиксельных и вершинных шейдеров. Со второй версии вершинных шейдеров, поддержка которых представлена в DX 9, появился контроль над исполнением хода шейдера – условия if/else/endif, циклы loop/endloop и подпрограммы. Взаимодействие с контекстом GDI, а также IDirect3DDevice смахивает на попытку поднятия из могилы недавно положенного туда DirectDraw. Формат пикселя с 10 битным каналом на каждую цветовую компоненту и 2 битами на альфа канал может показаться временным выходом из ситуации для жаждущих 64-битного представления цвета, тем не менее, аппаратная поддержка, а также в некоторых случаях совместимость оставляют желать лучшего.

В целом охарактеризовать DX 9 это акцент на графику как наиболее стремительно развивающуюся область и оптимизация в других компонентах как мне кажется, является правильным направлением на данный момент.

4.3DirectX 10

DirectX 10, как мы уже говорили, разработан специально для операционной Windows Vista. Он изначально включен в комплект поставки всех версий операционной системы. Разумеется, для того, чтобы DirectX 10 работал в полную силу своих возможностей, вам понадобится Windows Vista, видеокарта с поддержкой DirectX 10 и новейшие игры, включающие в себя возможности программы.

Итак, рассмотрим, что же нового ожидает нас в играх, поддерживающих технологии десятой версии DirectX и разработанных специально для Windows Vista. Основные достижения DirectX 10:

- Более реалистичная анимация шерсти меха и растений

- Более мягкие и более чёткие тени

- Более насыщенные ландшафты с более сложной окружающей обстановкой

- Значительно более тщательно прорисованный лес, более масштабные и детальные сцены баталий

- Более динамичные и чаще меняющиеся по ходу событий сценарии игр

- Больший реализм и уменьшение смазывания движущихся объектов

- Объёмные эффекты

- Уточнённый, более реалистичный дым и облака

- Более реалистичные отражения и преломления на отражающих поверхностях - воде, автомобилях, стекле и др.

- Снижение загрузки CPU, перераспределение обсчёта ряда процессов на GPU, снижение вероятности подтормаживания и зависания системы при сложном геймплее

Таким образом, благодаря такому полезному явлению, как DirectX 10, рядовым пользователям ПК доступны новые возможности и прелести графики игрового мира, в то время, как нагрузка на процессор заметно снижена, возложив обязанности прорисовки и детализации на видеокарту и DirectX. DirectX 10 позволяет имитировать процессы реальной жизни в игровом времени, позволяя заменять статичное окружение динамичным.

4.4 Графическая библиотека OpenGl

OpenGL является одним из самых популярных прикладных программных интерфейсов (API – Application Programming Interface) для разработки приложений в области двумерной и трехмерной графики.

Стандарт OpenGL (Open Graphics Library – открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc.

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

На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ. Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свободно распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux.

Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:

- Стабильность. Дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением.

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

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

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

4.5 DirectX, OpenGL и видеокарта

Полагаю, вы не раз видели при установки DirectX богатый набор файлов (d3d9.dll, ddraw.dll, dinput.dll, dsound.dll, и др.). Они содержат в себе основные компоненты DirectX: Direct3D (3D), DirectDraw (2D), DirectInput (ввод/вывод), DirectSound (звук) и др., встраивающиеся в систему через COM-интерфейс. Библиотека OpenGL представляет собой всего один файл, opengl32.dll, расположенный в системной директории.