Тотальная интеграция путем выбрасывания ненужных органов
(или Поставил я DirectX8)
Здраствуйте мальчики и девочки. Как вы уже наверное знаете, большой и умный
Microsoft (aka ®) выпустил восьмую версию своей библиотеки для программирования
игр, а также профессиональных мультимедиа-приложений DirectX под номером 8.
Вот так. Кормите его теперь чем хотите. Докачав последние метры Software Development
Kit, я распаковал его в специально подготовленную заранее папочку. Затем проинсталлировал
этого гада куда-попало, ну и наконец сел разбираться.
Посмотрев примерчики и сказав "Н-да.... Где-то я уже это видел...."
я полез в документацию. Среди бесчисленных килобайтов расписывания какие мы
крутые и как это все у нас хорошо, я нашел статейку под заголовком What's
New in DirectX 8.0
Интеграция, батенька и еще раз интеграция. То бишь воссоединение народов в
едином трудовом порыве. Под жизнеутверждающим утверждением, что наступает новая
эра, Microsoft объединяет свои самые важные части DX: DirectDraw
и Direct3D в одно целое, которое не долго думая назвало DirectX
Graphics. Но простите, после беглого просмотра документации, кое что бросается
прямо в глаза. Это кричит и орет одним своим отстутствием! Где DirectDraw?????
Нету его. Все, отпрыгался курилка.
То есть он конечно есть, но в виде поддержки предыдущих частей DirectX. Например
вы можете использовать объект DirectDraw7 (Тсс... Пока VB-шники не услышали!!!
Они то этого не могут!.... =80[] Так что, получается под громкими криками об
интеграции MS подразумевало просто выкидывание одной части? Вместо формулы 1+1=1
получилось нечто 2-1=1 Математически, конечно, правильно, но верните нам Blt!
На самом деле MS оставила нам, отсталым, возможность баловаться со спрайтами.
Но теперь это у нас происходит через 3D. Мне понравилось фраза "...2D симулируется
через 3D."
Радуйтесь! Мы дожили до такого времени, когда симулируется 2D, а не наоборот!
В чем тут дело? Ну представьте себе спрайт. Плоский, никому не нужный кусок
картинки. Давайте слепим вместе два треугольника, так чтобы получился прямоугльник,
натянем на него текстуру - вот вам и спрайт. Пользуйтесь на здоровье.
Особенности такого способа:
- Коллосольная скорость рендеринга на хороших машинах с акселераторами
- Посредственная скорость 2D на быстрых машинах, но без акселераторов (ну
как теперь секретаршам в Принца играться???)
- Возможность крутить-вертеть модель-прямоугольник вместе со спрайтом. Это
жрет меньше памяти под картинки разных позиций, сберегает время художников
- Возможность накладывать на спрайты много разных эффектов типа альфа-блендинга
и т.п. как на модели
- Многократно возросшая сложность программирования этого псевдо-2D по сравнению
с DirectDraw. Всякие там матрицы, кватернионы... Страшно?... А что у нас по
математике в институте было?..
- Собственно все это можно было делать и во всех предыдущих версиях Direct3D,
но тогда это всякими умными вещами типа опостылевшей "интеграции"
не называлось!!!!!!!!! А было просто Direct3D.
Вобщем все тут с ними ясно.
Помните такую вещь как Direct3D:Retained Mode? Помните как MS грозилась ее
прикрыть, обещая светлое наступление Farengheit'а? Вы не поверите, но D3D:RM
остался! Чего-то у них там с силиконами не срослось, ну и чтобы не позориться
вытащили на свет божий D3D:RM, немножко отряхнули, тут подмазали, там загладили,
назвали все это дело умным словом Direct3DX (ну букв-то мало, а слово придумывать
надо) и запустили в производство. Так что у нашего рабочего класса осталась-таки
возможность загружать полюбившиеся .x-файлы и натягивать текстуры без всякой
там возни с треугольниками, стримингом вершин и тому подобное требухи.
Чего у нас там дальше по плану? DirectSound? А нет больше такого! Знакомьтесь
с еще одним гибридом от Microsoft - DirectX Audio. Что они там наваяли с DirectSound
- не скажу, сам еще не сильно разобрался. Вобщем решили они объединить его с
DirectMusic. Кому и на что вообще сдался последний я не знаю. Вставлять MIDI
в коммерческие блокбастеры по моему перестали еще со времен Warcraft (ну был
там еще AoE от одного малоизвестного производителя. Наверное они ради него всю
затею с DirectMusic провернули). Так же идея с Downloadable Sounds поперхнулась
еще в начале тарелки. Обыкновенная трэкерная идея, которая работала еще на Спектруме,
сейчас аппаратно не поддерживается даже на моей Ямахе XG. А оставлять MS-драйверы
от Виндов ради совтверной поддержки непонятно чего????..... Ну вы меня поняли
:)
А кто-то там кажется встроенный EAX обещал? Кстати в DirectX Audio оставили
предыдущую градацию на DirectSound и DirectMusic, так что никто никуда таинственно
не пропадал.
Больше, на счастье, Microsoft ничего интегрировать не стал, оставив DirectInput
и DirectPlay существовать по отдельности. Наверное из-за поло... ой!... программной
несовместимости.... :)
В DirectInput у нас аж четыре (!) нововведения:
- Action Mapping - я не очень понял, но по моему теперь мы на уровне DX сможем
создавать виртуальные устройства для каких-либо физических устройств скажем
джойстика. То-есть теперь мы будем не отслеживать положение оси X джойстика
и в соответсвие с ней рулить вправо или влево, а создадим виртуальное устройство
DIAXIS_DRIVINGR_STEER и будем получать информацию с него.
Нафига козе баян.......
- Объект DirectInput теперь представлен классом DirectInput8
- Целых два (!!) новых свойства клавиатуры DIPROP_KEYNAME и DIPROP_SCANCODE,
которые получают соответственно локализованное имя клавиши и скан-код клавиши.
- Какая-то реорганизация в разделе джойстика, при которой положение оси Z
теперь можно получать не из пары отдельных типов, а из массива этих же самых
типов.
Согласитесь, что уже ради этого стоило выпускать восьмую версию библиотеки!
В DirectPlay более-менее увеличенное количество нововведений. Полностью переписан
объектный код и теперь у нас есть объекты DirectPlay8Peer, DirectPlay8Client
и DirectPlay8Server. Так же добавлена возможность голосового общения (Которая
применима лишь в условиях городских локальных сетей на 100 мегабит в нескольких
закрытых Городах Науки нашей необъятной Родины за символическую плату в месячный
доход американца средней упитанности)
Вобщем MS на месте как вы видите не сидит, а усердно на нем топчется. Теперь
придется сидеть и переписывать во всех туториалах цифирки 7 на 8, да и вдобавок
отправлять все учебники по DirectDraw на свалку или в лучшем случае в какой-нибудь
заплесневелый архив НЕЧасто зАдаваемых ВОпросов.
А что поделаешь - интеграция.....
Приятного программирования, Antiloop
Posted: 22.01.2k1
Autor: Antiloop
<anti_loop@mail.ru>
|
 |
 |
|