Оригинал материала: https://3dnews.ru./169186

Direct X от WinG до Fahrenheit

Стр.1 - Direct X от WinG до Fahrenheit

Началось все в трудный для Miсrosoft 1995 год. Только что вышедшую Windows 95 "Chicago" обругали буквально все. Страшные тормоза (не забывайте, это была эра 486-х машин), огромные, из-за большой требовательности новой OS к памяти, своп-файлы, невероятно медленная GDI - графика и чудовищное количество ошибок (Miсrosoft стала тогда рекордсменом по числу багов в одном программном продукте), послужили поводом для всеобщего недовольства. Создателям игр идея о том, что они будут писать под Windows 95, могла привидится только в кошмарном сне. Быстрые, качественные игры писались только под DOS. Из-за медлительности графических библиотек под Windows 95 создавались лишь те игры, которые не требовали интенсивной работы с графикой - головоломки или пасьянсы.

Естественно, что такого гиганта как Miсrosoft не устраивало, что ее последнее, дорогое и широко разрекламированное детище используют как операционную систему для пасьянсов и набора текстов. Поэтому практически сразу же были предприняты попытки исправить положение. Первая заплатка носила название WinG. Эта графическая библиотека была существенно быстрее стандартного GDI. И разработчики игр откликнулись на новации Miсrosoft. Вышло сразу несколько игр использующих WinG - стратегические игры (безусловный хит - Civilization2 от Сида Мейера), несколько аркадных платформенных игр и стрелялок. Но у данной графической библиотеки было несколько весьма существенных недостатков: ограничение в 256 цветов, которое не давало использовать возможности новых видеоадаптеров, поддержка только 2-D графики, только оконный интерфейс. Кроме того, эта библиотека была сделана также и под Windows 3.xx , поэтому вместо того, чтобы устанавливать на машине Windows 95, геймеры ставили комбинацию DOS + Windows 3.xx + WinG, которая обладала примерно теми же возможностями, но при этом работала гораздо быстрее и занимала на порядок меньше места. Не стоит забывать также, что библиотека WinG занималась только графикой, а как же звук, устройства ввода/вывода, сетевые возможности?

И вот зимой 1995 года (спустя полгода после выхода Windows 95) произошло событие, последствия которого мы ощущаем и до сих пор. В феврале 1995 года фирма Miсrosoft приобрела небольшую британскую компанию RenderMorfics. Эта компания, занимавшаяся средствами визуализации трехмерной графики под общим названием Reality Lab, обладая великолепным штатом программистов, добилась потрясающих результатов в области 2-D и 3-D, чем и привлекла к себе внимание гиганта. Став владельцем RenderMorfics, Miсrosoft немедленно приступила к конвертированию библиотек Reality Lab под Windows 95. Сроки поджимали, интерес к новой платформе без приложений стремительно падал. Спеша выдать хоть что нибудь, Miсrosoft выпускает хоть и недоделанный, но совершенно революционный по сути, комплект библиотек, названный дядюшкой Гейтсом Game SDK. Несмотря на то, что в этом комплекте отсутствовал главнейший на сегодняшний день компонент - Direct3D, выпуск этого продукта, сопровождаемый обильными потоками рекламы, всколыхнул околокомпьютерный мир. Первоначально, выход Game SDK, не вызвал большого восторга в среде программистов - мнение о том, то на платформе Windows 95 быстрые и красивые игры не живут (хотя Miсrosoft утверждала это про вирусы, а не про игры), слишком прочно утвердилось в головах разработчиков. Но выход Virtual Fighter - первой по настоящему быстрой, красивой и реалистичной игры под Windows 95 буквально поставил всех программистов на уши (хотел сказать - "перевернуло весь мир", но Miсrosoft чересчур злоупотребляет этим словосочетанием). Впервые компьютер с Windows 95 на борту на равных состязался с игровыми приставками (Virtual Fighter - это порт игры с 32-битной приставки SEGA Saturn). И это без Direct3D!

Приковав, таким образом, всеобщее внимание к Windows 95 и продемонстрировав дальнейшие перспективы данной операционной системы, Miсrosoft на этом не остановилась и в 1996 году выпускает продолжение Game SDK под уже привычным для нас названием DirectX 2. Главное изменение в этом комплекте - добавление Direct3D. Именно тогда DirectX обрел привычные для нас очертания.

Что же такое DirectX? Это прежде всего набор из нескольких API (application programming interface - интерфейс программирования приложений), позволяющих разработчикам игр и создателям красивых 3D приложений (demo making, visual plugin), аудио проигрывателей и других приложений под Windows95, получать доступ к особым функциям аппаратного обеспечения, без необходимости написания аппаратно-зависимого программного кода (проще - говоря, если в железе нет каких либо возможностей, то они эмулируются) . DirectX основан на наборе интерфейсов COM (Component Object Model - Компонентная Модель Объектов - спецификация интерфейса, в котором функции вызываются через указатели). Интерфейс COM используется не только в DirectX, но и на уровне операционной системы в качестве модели объектов и является сердцем одной из самой широко применяемой технологии -- OLE (Objects Linking and Embedding - связывание и встраивание объектов).

Стр.2 - Библиотеки DirectX

Библиотеки DirectX:

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

DirectSound - отвечает за вывод и микширование звука. Достаточно прост и удобен в использовании. Используется в подавляющем большинстве DirectX игр. Отличительною особенностью является наличие wave-эмуляции, которая позволяет даже при отсутствии драйвера звуковой карты, выводить через нее звук.

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

DirectPlay - независимый протокол для осуществления связи между компьютерами. Применятся для многопользовательских игр, связь в которых осуществляется через Интернет, локальную сеть или прямое последовательное соединение с помощью кабеля.

Direct3D - отвечает за создание трехмерных графических изображений в режиме реального времени. Теснейшим образом связана с DirectDraw. Ближайший конкурент OpenGL. Состоит из API низкого уровня, который обеспечивает несколько базовых возможностей создания изображения, и API высокого уровня, который осуществляет комплекс операций, образующих изображение. В настоящее время активно продвигается Microsoft.

Но под DirectX 2 так и не было выпущено ни одной игры, так как очень быстро вышел DirectX 3 и разработчики быстро переориентировались на новинку. Вот именно с этой версии началась эра DirectX!

Напомню, что DirectX 3 поставлялся не только как Runtime компоненты, но и был встроен в долгожданную, исправленную и дополненную Windows 95 OSR2, которую многие заочно называли Windows 97, настолько эта версия и по стабильности и по удобности превосходила первый билд Windows 95 (OSR1 прошел мимо России, так как распространялся только в среде ОЕМ - партнеров Microsoft). А дальше новые версии DirectX полетели со свистом.

Не выпустив по каким-то субъективным причинам DirectX 4, Microsoft радует нас сразу пятой версией. В этой версии основные изменения коснулись DirectDraw - там появился новый интерфейс IDirectDraw3. Остальные компоненты были оптимизированы и в них была включена поддержка технологических новинок вышедших за последнее время (в частности 3Dsound).
Именно эта версия DirectX порадовала нас (и Microsoft) многочисленными играми под Windows 95: Fallout, Age of Empiers, Final Fantasy VII, Quake 2, Might & Magic VI, многочисленные стратегии, гонки, симмуляторы, имитаторы, шутеры, да всех и не упомнишь. Это был бум игр использующих DirectX, который продолжается и до сих пор.

Спустя достаточно долгое время Microsoft выпускает новую шестую версию DirectX. На сей раз ее уже ждут с нетерпением. На этом чувстве ожидания сыграли компьютерные пираты, включившие первые бета версии DirectX 6 во все популярные сборники с софтом. Эти сборники брали охотнее, чем аналогичные, но без DirectX 6. Вышедшая Windows 98 имела эту версию в своем составе. В DirectX6 был включен еще один компонент - DirectMusic, который существенно улучшал звучание midi - инструментов, но за счет большей загрузки процессора. Насколько мне известно ни одна игра не использует эту библиотеку (а ведь прошло уже больше года с момента ее появления), поэтому непонятно, зачем она вообще нужна.

В DirectX 6.1 произошло изменение библиотеки Direct3D, которая была опять оптимизирована (сколько ж можно) и в ней была добавлена поддержка рельефного текстурирования - bumpmaping. Опять таки, эту возможность практически никто не использует, так как тогда железной поддержки практически не было, а программная эмуляция очень замедлена.

Начиная с DirectX 7 Microsoft похоже решила забросить все остальные модули, сосредоточив свое внимание только на Direct3D. По крайне мере главные изменения сосредоточены именно в этой библиотеке. И самое главное изменение, безусловно - это поддержка аппаратного T&L (правда немного кривая) и аппаратной компрессии текстур - DXTC (бывшая в девичестве S3TC), которая была лицензирована у компании S3.

DirectX 7 включены в Windows 98 SE и Windows 2000.
Самая последняя на данный момент полная версия DirectX версия 7.0а rus. Так же компания Microsoft распространяет тестовую бета-версию DirectX 8.

Стр.3 - Проект Fahrenheit

Проект Fahrenheit

Вот и все о прошлом и настоящем DirectX. Давайте теперь поговорим о дальнейших радужных перспективах этого продукта, которые нам рисует его создатель - скромная фирма Microsoft.

А эта компания - труженик хочет ни много ни мало, а всего на всего возможность создания спецэффектов подобных творениям компании Industrial Light and Magic (та что создала терминаторов), причем на твоей машине, уважаемый пользователь. А ведь именно это, по утвеждению компании Microsoft и Silicon Graphics Inc. (SGI), будет способен делать их новый (хотя уже старый, раз они его в 1997 году затеяли) совместный проект Fahrenheit (Фаренгейт).

О создании стратегического альянса между MS и SGI было объявлено, как уже говорилось, 17 декабря 1997 года. Проект Fahrenheit, после реализации (когда ж это будет, в DirectX8 его, похоже, еще нет) будет представлять из себя набор из аж трех новых API и должен будет избавить программистов от необходимости писать различные варианты драйверов и приложений для интерфейсов OpenGL и Direct3D или выбирать, какой API предпочесть. За них все решат милые дядьки из Microsoft и SGI.

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

Первый API, из трех новых, получил кодовое имя Fahrenheit Scene Graph. Он будет представлять собой прослойку, связывающую собой приложение и низкоуровневый графический API, с изоляцией приложения от аппаратной части и системных особенностей, правда, лишь в случае применения графического API низкого уровня. Обеспечивая такую изоляцию, Scene Graph облегчает жизнь разработчикам, т.к теперь им можно сосредоточиться на создании самого приложения, оставляя без внимания множество различных факторов (типа, как оптимальным образом использовать основные аппаратные и системные ресурсы?). Scene Graph может использовать возможности компьютеров c многопроцессорной конфигурацией. В этом я вижу опасность. Когда Microsoft говорит "может", то это как-то само собой вскоре превращается в "должен", а на многопроцессорные системы вряд ли у кого сейчас (да и в скором будущем) найдутся деньги. В качестве основы для нового API Fahrenheit Scene Graph, была выбрана технология COM (common object model - обобщенная модель объектов) и существующий API Scene Graph от SGI.

Интерфейс Fahrenheit Scene Graph - это высокоуровневый интерфейс абстрактного программирования для разработчиков приложений для операционных систем MS Windows и SGI IRIX.

Второй новый API, является расширением Scene Graph, его кодовое имя - Fahrenheit Large Model Visualization (интерфейс наглядного представления больших моделей), которое будет использоваться для создания таких приложенияй, как пакеты для трехмерного моделирования (3D-CAD). Основа для Fahrenheit Large Model Visualization - интерфейсы Graphics OpenGL Optimizer от SGI (известное и распространенное расширение OpenGL) и Direct Model от Hewlett-Packard и MS.

Ясно, что рядовым пользователям, с обычными машинами от этого API ничего не светит. Этот API может управлять невероятно большими и сложными наборами данных, включая десятки или сотни миллионов полигонов или треугольников, или, что более типично - сотни тысяч или миллионы математически сложных поверхностей, и, разумеется его не потянет любимый Pentium I, II, !!!.

Третий, наиболее интересный нам, рядовым смертным новый API имеет кодовое имя Fahrenheit low level API (интерфейс низкого уровня). Его появление ожидается в середине 2000 года, а функционально он располагается над всей аппаратной частью и обеспечивает поддержку всех приложениям, начиная от игр и развлекательных программ всех направлений до научных и высокотехнологичных приложений. Основой для low-level API будут технологии Direct3D и Direct Draw от Microsoft и технология OpenGL от SGI.

Fahrenheit low-level интерфейс будет иметь полную обратную совместимость с сегодняшним API DirectX (отлично!), и функциональную совместимость с технологией OpenGL компании SGI (ну что, еще раз ура). Fahrenheit low-level API будет основным графическим интерфейсом как для профессиональных, так и для пользовательских приложений в среде Windows.

Как ожидается, проект Fahrenheit вышвырнет со сцены так называемые native API ( Glide от 3DFX, MeTaL от S3 и т.д.) и наконец-то положит конец царящей на рынке 3D ускорителей анархии, положив начало единому общему стандарту.

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



Оригинал материала: https://3dnews.ru./169186