Версия для печати


Проекты для работы с DirectX
http://www.delphikingdom.com/asp/viewitem.asp?catalogID=734

Виктор Кода
дата публикации 19-12-2002 12:17

Проекты для работы с DirectX

Данные проекты представляют собой набор простых примеров для изучения основ DirectX на языке Object Pascal в Delphi. Адресуется начинающим в этой области. Все пояснения находятся в коде программ, надеюсь, они достаточны для понимания сути.

Все проекты строились в IDE Delphi 5. В версии 3 ошибки будут возникать уже на этапе компиляции, хотя бы из-за того, что в модуле DirectXGraphics.pas повсеместно используется тип LongWord, в третьей версии неопределённый. В версии 4 компилировать не пробовал, её у меня нет, возможно (не знаю точно), в среде не будут отображаться формы проектов.

Все примеры базируются на библиотеке VCL, кроме DDDemo. Он написан на Win32 API, надеюсь, вы знакомы с его основами. Никакие сторонние компоненты, наподобие DelphiX, не используются, происходит прямой вызов функций API DirectX. Один совет - если планируете заниматься этим серьёзно, забудьте про всякие компоненты - у профессионалов даже мысли не возникает использовать такой подход.

Хотя для работы с DirectX для Delphi существует множество различных файлов заголовков, для того, чтобы следовать хоть какому-то стандарту, я использовал файлы заголовков, загруженные с сайта www.delphi-jedi.org. Чтобы предотвратить "разбухание" заголовочных файлов (как это происходит с файлами Microsoft для С с выходом каждой новой версией DirectX), в некоторых из них описаны только интерфейсы последней версии, и вы не сможете использовать, скажем, IDirectInputDevice. Сделайте заголовочные файлы доступными для проектов.

При написании примеров я исходил из двух критериев - максимально лаконичный код и наглядность. Мне хорошо известно, насколько трудно разбирать программы, написанные кем-то другим и попытался сделать их по возможности простыми, но полностью функциональными. Все возможности игровой библиотеки не используются, в частности, не показано, как корректно выводить в DirectDraw спрайты, выходящие за границы экрана, как плавно гасить экран и т. д. Всё это вы сможете узнать из DirectX SDK, который я советую вам приобрести. Моя цель -показать последовательность основных шагов при ипользовании того или иного компонента DirectX.

Наиболее "Тяжёлым" получился пример для DirectXAudio - поверьте, меньший объем получить не удасться! Окно несколько перегружено управляющими элементами, но я хотел сделать пример более интересным. Механизм считывания данных из wav-файла настолько сложен, что реализовать его в малом объёме кода не представляется возможным. При разработке примера я активно пользовался документацией из SDK 7. Файл wavread.cpp из MS DXSDK 7 был разбит мною на два файла - wavread.pas и lowfunc.pas, которые являются точным переложением с C++. lowfunc.pas не является полным - в тексте модуля я оставил соответствующие комментарии - я просто не сумел перевести сложные выражения на C в Pascal. ;-( Если сможете, напишите мне. Пока же одна из функций берётся из DLL, написанной в Borland C++ 5 (не Builder).
Дольше всего я возился с примером для мыши.

Все иконки для exe-файлов и окон автор рисовал лично (я ещё и неплохо рисую) в программе Microangelo 5.51 (URL ukms.tucows.com/files/mike5.exe 2,3 MB).

 

Все примеры тестировались на следующем "железе": Использовались операционные системы Windows 98 SE и Windows ME при Rus и Eng-версиях DirectX 8.1.

 

При изучении DirectX я пользовался такими источниками:

Скачать проект :
DelphiDirectX.zip (115 K)