Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

What's New In DirectX 7 ?

What's New In DirectX 7 ? А точнее, на что он нам вообще сдался?

What's New In DirectX 7 ?
А точнее, на что он нам вообще сдался?

Автор: Antiloop, Уголок DirectX.

Какая новость! С ума сойти! Теперь программирование DirectX возможно на все более и более популярном языке программирования Visual Basic! И все благодаря тому, что корпорация Microsoft включила поддержку Visual Basic в очередную версию интерфеса программирования игр и мультимедиа приложений - DirectX 7 !!!

Вот официальные улучшения, внесенные в DirectX7. Это относится ко всему DirectX, а не только к Visual Basic. Весь Copyleft на нижеследующие строки принадлежит Microsoft. Новая библиотека типов Visual Basic сделала возможным программирование интерфейса DirectX из этой оболочки (ну что бы мы без них делали?! Прим. меня). MicrosoftR Direct3DR Immediate Mode API дополнились многими функциями, включая device-state blocks, geometry blending, cubic environment mapping, user-defined clipping planes, и другими. Новая библиотека Direct3DX Utility Library доступна теперь, как вспомогательный слой, находящийся наверху Direct3D и MicrosoftR DirectDrawR упрощяет выполнение обычных задач, которые требовалось выполнять разработчикам 3D графики. MicrosoftR DirectMusicR поддерживает Downloadable Sounds level 2 standard. MicrosoftR DirectInputR теперь поддерживает восемь кнопок мыши, эксклюзивный доступ к клавиатуре и задержанные эффекты для force-feedback, а также прилагается программа Force Editor для создания эффектов. Улучшен hardware voice management реализованный в MicrosoftR DirectSoundR. Новый способ обработки 3-D аудио в DirectSound позволяет беречь ресурсы CPU. DirectDraw стерео поддержка была добавлена для активных устройств (???). Улучшена документация, включая динамическое фильтрирование и специфическая языковая информация. Включено больше примеров.

В полной мере все эти нововведения может испытать, пожалуй только Билл Гейтс со своей восьмикнопочной мышью, да еще программирующие на Си и скачавшие маааленькую DirectX SDK на 200 мегов с официального сайта Microsoft.

Ну скачает обыкновенный российский программер на VB эту ихнюю SDK, и что там найдет? Кучу документации по Си, чуть чуть по VB, по которым все равно ничего не выучишь, несколько примеров, которые все равно непонятные и это не говоря о том, что надо будет в совершенстве владеть английским языком. А когда он обнаружит, что для любимого дела, то-есть для программирования на Visual Basic и использования DirectX ему будет нужна всего лишь маленькая библиотека, которая к тому же входит в состав обычной установки DirectX7, которая сейчас все чаще встречается на дисках с игрушками... Я бы не мешкая снес эту кучу мукулатуры с моего винчестера. Пусть лучше место под программы останется.

Итак, для того, чтобы начать программировать DirectX 7 на VB вам нужно: VB DirectX7 - не SDK! Возьмите у знакомого-геймера новый выпуск какой-нибудь игры и посмотрите на нем. Установить DirectX, войдите в VB, создайте новый проект и попробуйте добавить к нему "reference" DirectX 7 Type Library. Если не увидите ее в списке, нажмите кнопку Browse и найдите в WindowsSystemdx7vb.dll Приаттачте ее. Если по каким-то причинам библиотеки не будет, скачайте ее с моего сайта, поместите в WindowsSystem и повторите процедуру. Найдите кучу учебников по DX на сайтах типа моего. Начинайте творить!

Как всегда, не посоветовавшись с коллективом трудящихся, Microsoft сделала все по своему. Не обратив внимание, что уже несколько лет программисты на VB прекрасно обходились библиотеками Patrice Scribe, Microsoft написала свои процедуры работы с DirectX и теперь тем, кто раньше уже работал с DX, придется немножко переучиться.

После беглого просмотра, я отметил, что от техники, которая использовалась в DirectX 3-6 TLB, DirectX 7 отличает в главной степени инициализация. Все функции типа Блиттинга, переноса изображения и т. п. остались вроде как не тронутыми, поэтому далее я их не разбираю. Создание моего сайта пришлось на "переходный период", когда DX7 только появился, поэтому на настоящий момент все учебники по DirectDraw используют PS-TLB, а остальные DX7, поэтому я дам краткий обзор, как в DD перейти к DX7. Сравнение инициализации Scribe-DirectDraw и DirectDraw7:

Объявления переменных:

Практически аналогично в обоих случаях. Однако в DX7 кроме объекта DirectDraw, объектов поверхностей (буферов) и структуры описания поверхности надо объявить главный объект DirectX.

Раньше мы делали это так: Dim dd As DirectDraw Dim Primary As DirectDrawSurface 'Primary surface Dim BackBuffer As DirectDrawSurface 'BackBuffer surface Dim ddsd As DDSURFACEDESC Dim caps As DDSCAPS

В DirectX7 это делается так: Dim dx As DirectX7 Dim dd As DirectDraw7 Dim Primary As DirectDrawSurface7 'Primary surface Dim BackBuffer As DirectDrawSurface 'BackBuffer surface Dim ddsd As DDSURFACEDESC2 Dim caps As DDSCAPS2

Далее, надо создать объект DirectDraw, установить режим отношения программы с другими приложениями (Coopeartive Level) и режим экрана. В DirectDraw7 объект DirectDraw создается из объекта DirectX.

Сначала предыдущая версия: Call DirectDrawCreate(ByVal 0&, dd, Nothing) 'Создаем DirectDraw Call lpDD.SetCooperativeLevel(trgtForm.hwnd, DDSCL_EXCLUSIVE Or DDSCL_FULLSCREEN Or DDSCL_ALLOWREBOOT) 'Режим работы Call lpDD.SetDisplayMode(X, Y, Color) 'Режим дисплея

Теперь, DirectX7 Set dd = dx.DirectDrawCreate("") 'Создаем DirectDraw Call dd.SetCooperativeLevel(trgtForm.hWnd, DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE Or DDSCL_ALLOWREBOOT) 'Режим работы Call dd.SetDisplayMode(X, Y, Color, 0, DDSDM_DEFAULT) 'Режим дисплея

Теперь надо задать описание главной поверхности, создать ее и получить задний буфер.

Scribe-DirectDraw: 'Create a front surfaces With ddsd .dwSize = Len(ddsd) .dwFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT .DDSCAPS.dwCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX .dwBackBufferCount = 1 End With Call dd.CreateSurface(ddsd, Primary, Nothing) 'Retrieve BackBuffer caps.dwCaps = DDSCAPS_BACKBUFFER Call Primary.GetAttachedSurface(caps, BackBuffer)

DirectDraw7: 'Create a front surfaces ddsd.lFlags = DDSD_CAPS Or DDSD_BACKBUFFERCOUNT ddsd.ddsCaps.lCaps = DDSCAPS_PRIMARYSURFACE Or DDSCAPS_FLIP Or DDSCAPS_COMPLEX ddsd.lBackBufferCount = 1 Set Primary = dd.CreateSurface(ddsd) 'Retrieve BackBuffer caps.lCaps = DDSCAPS_BACKBUFFER Set BackBuffer = Primary.GetAttachedSurface(caps)

После этого можно установить ColorKey и другие дополнительные параметры. Как видите, смысл один и тот же, а разница скорее в синтаксисе, что однако довольно неприятно.

Так что, для какого DirectX программировать решать конечно же вам. По крайней мере уже целая толпа, пожав плечами отправилась юзать новое детище Microsoft... Удачи, и

Приятного программирования, Antiloop



  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте