Logo CitForum CITForum на CD Форумы Газета Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

24.05.2012

Google
WWW CITForum.ru
2000 г

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 вам нужно:

  1. VB
  2. DirectX7 - не SDK! Возьмите у знакомого-геймера новый выпуск какой-нибудь игры и посмотрите на нем.
  3. Установить DirectX, войдите в VB, создайте новый проект и попробуйте добавить к нему "reference" DirectX 7 Type Library. Если не увидите ее в списке, нажмите кнопку Browse и найдите в Windows\System\dx7vb.dll Приаттачте ее. Если по каким-то причинам библиотеки не будет, скачайте ее с моего сайта, поместите в Windows\System и повторите процедуру.
  4. Найдите кучу учебников по DX на сайтах типа моего.
  5. Начинайте творить!

Как всегда, не посоветовавшись с коллективом трудящихся, 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

 

Подписка на новости CITForum.ru

Новые публикации:

19 мая

  • Прозрачный механизм удаленного обслуживания системных вызовов

  • Система моделирования Grid: реализация и возможности применения

    Газета:

    Майкл Стоунбрейкер:

  • Ошибки в системах баз данных, согласованность "в конечном счете" и теорема CAP

  • Дискуссия по поводу "NoSQL" не имеет никакого отношения к SQL

    29 апреля

  • Материалы конференции "Корпоративные Базы Данных-2010"

  • Разные облики технологии баз данных (отчет о конференции)

    14 апреля

  • MapReduce: внутри, снаружи или сбоку от параллельных СУБД?

  • Научные вызовы технологиям СУБД

    Обзоры журнала Computer:

    31 марта

  • Рационализация согласованности в "облаках": не платите за то, что вам не требуется

  • Взаимные блокировки в Oracle

  • Архитектура среды тестирования на основе моделей, построенная на базе компонентных технологий

  • Объектное представление XML-документов

    Газета:

  • Microsoft для российских разработчиков: практика с элементами фундаментальности

    10 марта

  • HadoopDB: архитектурный гибрид технологий MapReduce и СУБД для аналитических рабочих нагрузок

  • Классификация OLAP-систем вида xOLAP

  • BGP. Три внешних канала. Балансировка исходящего и входящего трафиков

    Газета:

  • Что мы знаем об iPhone 4G?

    17 февраля

  • MapReduce и параллельные СУБД: друзья или враги?

  • Объектно-ориентированное программирование в ограничениях: новый подход на основе декларативных языков моделирования данных

  • Системологический подход к декомпозиции в объектно-ориентированном анализе и проектировании программного обеспечения

    Газета:

  • Эволюция Wine

    3 февраля

  • Дом на песке

  • Реальное переосмысление "формальных методов"

  • Интервью с Найджелом Пендзом

    Газета:

  • iPad. Первый взгляд на долгожданный планшет от Apple

  • Я не верю в iPad

    20 января

  • SQL/MapReduce: практический подход к поддержке самоописываемых, полиморфных и параллелизуемых функций, определяемых пользователями

  • Данные на лету: как технология потокового SQL помогает преодолеть кризис

    Обзоры журнала Computer:

    2 декабря

  • Сергей Кузнецов. Год эпохи перемен в технологии баз данных

    18 ноября

  • Генерация тестовых программ для подсистемы управления памятью микропроцессора

  • Сравнительный анализ современных технологий разработки тестов для моделей аппаратного обеспечения

    Все публикации >>>


  • IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы — тел. +7 495 6608306, ICQ 232284597 Пресс-релизы — pr@citforum.ru
    Послать комментарий
    Информация для авторов

    Редакция раздаёт котят!

    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2009 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...