[Главная] [Новости] [Статьи] [Игры] [Проекты] | [Автор] | |||
[Архив новостей] | ||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | |||
Основы 3D-программирования DirectX9 в Delphi 2006: теоретические и практические основы создания игр. | ||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...] | ||||||
[Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi] | ||||||
[Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX] | ||||||
Что такое Delphi DirectX ? |
[назад] [далее] [к содержанию] | ||
Мы рассмотрим особенности, которые могут встретиться в примере delphi_dx9\samples\DirectX90\Direct3D\Tutorials\Tut01_CreateDevice предполагается, что папка delphi_dx9 это та самая папка, куда Вы распаковали содержимое архива delphi_dx9.rar |
||
Думаю не лишним будет напомнить, что прежде чем компилировать любой пример исходного кода в Delphi 2006 (или другой версии, которую Вы используете) нужно 1) Проверить настройки открытого проекта Project > Options > Directories/Conditionals > Search path Если пути к папкам с библиотеками исходного кода delphi directx 9 заданы неверно, то Вы получите ошибки компиляции 2) Перед запуском созданного exe-файла скопируйте в папку проекта файлы D3DX9sab.dll DXErr9ab.dll Если пример использует какие-либо ресурсы (модели, текстуры, звуковые файлы), то Вы должны позаботиться о том, чтобы приложение могло найти их. Должна быть корректно установлена последняя версия DX SDK в Вашей системе, либо Вы должны модифицировать пути к ресурсам в исходном коде так, чтобы разместить их внутри папки данного проекта в отдельной папке, например внутри подпапки Media В противном случае Вы получите ошибки при исполнении приложения |
||
Перейдем непосредственно к примеру delphi_dx9\samples\DirectX90\Direct3D\Tutorials\Tut01_CreateDevice Данный пример функционирует аналогично примеру CreateDevice из DX SDK 8, с той лишь разницей, что используется новый интерфейс - Direct3D9 Сразу же возникает вопрос: какая версия DX SDK 9 и соответственно DirectX используется в данной библиотеке Delphi DirectX 9? Заглянем в файл Direct3D9.pas и в заголовке модуля увидим, что это версия Summer 2003, т.е. лета 2003 года. Версия определяется строкой - g_pD3D := Direct3DCreate9(D3D_SDK_VERSION); т.е. по сути параметр D3D_SDK_VERSION и определит ее. Новый вопрос: А можно ли использовать ту версию DX SDK 9, которая есть у нас под рукой и является более свежей? Например, у меня сейчас под рукой есть DX SDK August 2008, что естественно намного свежее, чем 2003, как Вы сами понимаете. Итак, А можно ли...? Можно! И нужно попробовать. Значение D3D_SDK_VERSION и нужно взять из заголовочных файлов более свежей версии. У меня они естественно в оригиналах на C++. Но ничего страшного. Попробуем. Запускаем MSVS, а если у Вас нет MSVS, то просто Блокнотом, открываем файл d3d9.h из свежей версии SDK и смотрим значение D3D_SDK_VERSION. |
||
Там всё по-моему предельно ясно - /*
This identifier is passed to Direct3DCreate9 in order to ensure that an #ifdef
D3D_DEBUG_INFO #else |
||
Кому всё равно не совсем ясно поясню. Этот идентификатор передается Direct3DCreate9 в порядке гарантии того, что приложение было собрано с использованием корректных заголовочных файлов. Это число увеличивается от файла к файлу в зависимости от его версии. Изменение требует повторной сборки приложения. Если версия не соответствует, происходит ошибка метода Direct3DCreate9 (Само по себе число не имеет значения) |
||
Исходя из этого получается, что использовав значение #define D3D_SDK_VERSION 32 мы получим в своё распоряжение доступ к интерфейсу DirectX 9 последней версии (лета 2008 года). В качестве учебного задания Вам - используйте это значение и попробуйте запустить пример CreateDevice |
||
У меня всё получилось, а это значит мы можем пользоваться самым последним интерфейсом DirectX9! Важно конечно учесть тот факт, что на компьютере пользователя, где будет запускаться Ваша будущая игра также должна быть установлена версия DirectX не ниже той, для которой Вы выполняли разработку. Если она будет ниже, то естественно пользователь не сможет поиграть в Вашу игру - ему придется сначала обновить свой DirectX.
|
||
В чём заключается работа примера CreateDevice? Это своего рода hello, world для программирования DirectX Ваше приложение не выполняет ничего полезного, но Вы уже чувствуете, что первый шаг в освоении DX SDK 9 на Delphi успешно сделан. |
||
Советую конечно же обратиться к оригинальной документации по DX SDK 9, которая есть у Вас под рукой, а еще лучше скачать самую свежую версию. | ||
Пример работает таким образом: WinMain (роль которого играют логические скобки begin ... end. модуля CreateDevice.bdsproj) > InitD3D > обработка цикла сообщений Далее работа переносится в метод MsgProc. В ответ на сообщение WM_PAINT происходит отрисовка d3d-сцены (в нашем случае просто заполнение фона данным цветом), подтверждение границ окна В обработчике сообщения WM_DESTROY вызывается весь код, необходимый для завершения работы D3D-приложения. Вот и всё. Это и есть WinAPI-приложение. |
||
Задание для самостоятельного решения: - как изменить цвет, которым заполняется рабочее пространство окна d3d-приложения? - как задать другие размеры окна? |
||
Ответы: - g_pd3dDevice.Clear(0, nil, D3DCLEAR_TARGET, $FFxxxxxx, 1.0, 0); Вместо xxxxxx задайте требуемое значение цвета в формате hex, например красный - $FFFF0000 желтый - $FFFFFF00 и т.д. -
hWindow := CreateWindow('D3D Tutorial', 'D3D Tutorial 01: CreateDevice', числа выделенные зеленым задают первоначальное положение окна, оранжевым - первоначальные размеры окна |
||
в следующем уроке мы кратко рассмотрим работу с примерами Vertices, Matrices, Lights, Textures, Meshes | ||
[назад] [далее] [к содержанию] |
Обновления
и новости о развитии Delphi DirectX проекта http://www.megainformaticsite.pochta.ru http://www.megainformatic.boom.ru http://www.megainformatic.narod.ru
|
|||||||||
по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме |
|||||||||
Обмен ссылками | |||||||||
|
|||||||||
(с) МЕГА ИНФОРМАТИК 2006-2009 |