Виктор Кода дата публикации 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).
Все примеры тестировались на следующем "железе":
- 1) Sprite - тестировался на видеокартах S3 Inc. Trio 3D/2X и GeForce2 MX400.
- 2) Mouse - c двухкнопочной и четырёхкнопочной мышами A4 Tech.
- 3) Keyboard - на стандартных клавиатурах 101/102 клавиши.
- 4) Joystick - с геймпадом Genius MaxFire Programmable G08.
- 5) Sound - на звуковых картах Crystal WDM Audio и Avance AC'97 Audio.
- 6) Enum - на всём вышеперечисленном.
Использовались операционные системы Windows 98 SE и Windows ME при Rus и Eng-версиях DirectX 8.1.
При изучении DirectX я пользовался такими источниками:
- 1) Фролов А. В., Фролов Г. В. Мультимедиа для Windows. - 2-е изд., стер. - М.: "ДИАЛОГ-МИФИ", 1995. - отсюда я почерпнул некоторые данные о функциях mmioAscend(), mmioClose() и т. д.
- 2) Гончаров Д. Салихов Т. DirectX 7.0 для программистов. Учебный курс (+CD). Спб.: Питер, 2001. Гнига для программистов, пишущих на C++, но сгодится и для Pascal.
- 3) DirectX SDK 7.0 и 8.0 - обязательно для всех программистов игр и не только. Примеры в SDK 7,в частности для DirectInput, более просты и легки для первого знакомства.
Скачать проект :
DelphiDirectX.zip (115 K)
[DirectX, DirectShow etc.]
Обсуждение материала [ 26-09-2008 08:43 ] 3 сообщения |