Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Полигон
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  21:40[Войти] | [Зарегистрироваться]

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

Виктор Кода
дата публикации 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 сообщения
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования