Тотальная интеграция путем выбрасывания ненужных органов (или Поставил я DirectX8)
Тотальная интеграция путем выбрасывания ненужных органов (или Поставил я 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 на свалку или в лучшем случае в какой-нибудь заплесневелый архив НЕЧасто зАдаваемых ВОпросов. А что поделаешь - интеграция.....
1135 Прочтений • [Тотальная интеграция путем выбрасывания ненужных органов (или Поставил я DirectX8)] [16.05.2012] [Комментариев: 0]