Программирование 3D-игр в DirectX на Delphi
 
         
    [Главная] [Новости] [Статьи] [Игры] [Проекты] [Автор]  
         
     
 

Создание компьютерных игр на основе DirectX в среде Delphi 6, 7

Также доступны следующие разделы по изучению DirectX в Delphi 7

Основы DirectInput8 на Delphi

Основы DirectSound на Delphi

Рабочие примеры Direct3D на Delphi 6, 7

 

Введение

 

Создание современных компьютерных игр длительный процесс. Существует несколько платформ, которые можно использовать в качестве основы.

В данном сборнике статей описывается применение технологий DirectX при создании игр в среде Delphi. Автор приводит примеры для реализации в среде Delphi 7. Однако если у Вас отличная версия, то поскольку все версии совместимы (с учетом определенных ограничений, поэтому могут потребоваться небольшие изменения в коде), Вам не составит труда внести эти изменения.

На сегодняшний день самым свежим является DirectX 9 SDK, содержащий Direct3D 10 (на момент чтения Вами этой статьи возможно еще свежее). Данный цикл примеров посвящен основам работы с DirectX 8.1 SDK (Software Developers Kit). Если Вы разберетесь с DX 8.1, то перейти на 9 не составит большого труда т.к. общие принципы останутся прежними.

Почему избраны DX8 и Delphi? Всё очень просто - с Delphi я начал изучать в 2002 году программирование. Мне попался в руки очень интересный диск "Большая Библиотека Delphi" от ИДДК и я решил изучать Delphi. Прошло 4 года. Для создания игр я воспользовался DelphiX. Однако после первой же игры рамки DelphiX мне оказались тесны и прежде всего из-за отсутствия документации по DX7. Мне посчастливилось найти диск с DirectX 8.1 SDK. Конечно же большим недостатком DX SDK является то, что все примеры даны на C++ (в DX9 SDK еще и на C#). Однако обладая небольшими знаниями C++ (переходить на него я так и не стал, т.к. в MSVS 7 напрочь отсутствует документация по классам MFC и самому C++, "лазить" за ней надо на MSDN). Вообщем перед Вами пример того, что мне уже удалось. Перед Вами примеры исходного кода из оригинального DirectX SDK 8.1, но адаптированные для Delphi. К слову сказать, языки Delphi и С++ (если брать не синтаксис и семантику, а алгоритмическое построение) имеют вообщем-то одну и ту же основу. В Delphi 7 к тому же, вся документация была под рукой. Все это и дало мне возможность адаптировать С++ примеры для Delphi.

Итак, засучив рукава, перейдем к изучению

Direct3D

 

Базовые уроки

 

Вашему вниманию предлагаются 8 базовых уроков представляющих оригинальные уроки (1-6) взятые из DX SDK 8 и адаптированные к применению в Delphi 7.

Примечание: длинных описаний и пояснений к урокам пока не даю - все что здесь есть - это в основном исходный код и исполнимый откомпилированный файл. Чтобы детально разобраться в технологии Вам понадобится DX SDK 8 или выше, Delphi 7 (или 6 или выше) и много много терпения и упорства.

 

Обзор уроков

 
     

Урок 1

 

Знакомит с концепцией написания приложений для работы с DirectX. Описываются принципы написания WinAPI приложений, способы обращения к арсеналу DirectX.

Урок 2

 

Ваше первое полноценное DirectX-приложение. В окне приложения изображается разноцветный треугольник.
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Первый шаг
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Шаг второй
       

Урок 3

 

Снова треугольник, но уже вращающийся. Показывается методика работы с матрицами.

Урок 4

 

На экране создается цилиндр. Показано использование материалов и источников освещения.
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Посложнее
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Следующий шаг
       
Урок 5 Вращающийся цилиндр показан с наложением текстуры. Показано использование текстур.

Урок 6

 

На экране показана первая сложная модель – поверхность из набора треугольников (Mesh). Это модель тигра.

Используется наложение текстуры. Показано как загрузить модель из X-файла (икс-файла).

для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Это уже интересно!
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Еще интересней
 

Данные уроки основаны на оригинальных уроках из DX SDK 8. Они лишь адаптированы к применению в Delphi7.

 

Последующие уроки являются, если это особо не указано, разработкой автора – производные или оригинальные на основе базовых знаний уроков 1-6 и информации из оригинальной документации по использованию DirectX в С++ приложениях.

       
Урок 7 Показана технология использования DirectX внутри стандартных VCL-приложений Delphi. Использование окна диалога для выбора файла произвольной модели (из X-файла). Урок 8

Слегка модифицированное приложение из урока 8 – показывает как можно изменять положение наблюдателя для лучшего обозревания модели.

 

О том как создавать X-файлы см. дополнения.

для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
VCL+DirectX!
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Новые модели
       
Урок 9 Данное приложение позволит Вам: а) загрузить какую-либо модель в x-формате (икс-формате); б) посмотреть каким образом реализуется сложное вращение (сразу по двум осям) - в методе SetupMatrices; в) узнать как можно добиться эффекта обозревания мира (3D-пространства модели) управляя положением наблюдателя (камеры). Это модифицированное приложение из урока 8 – следующий базовый шаг в изучении технологий DirectX и их применении в практике программирования на Delphi. Урок 10

Данный урок введет Вас в создание полноценного Direct3D8-приложения на Delphi 7. Библиотека исходного кода позволит Вам быстрее начать создавать 3D-приложения на Delphi. Особенности урока: 1) выбор адаптера и видеорежима; 2) работа с DX-файлами; 3) работа с шейдерами; 4) анимация; 5) пример подводной сцены; 6) особенности Delphi-кода под Direct3D8. Данный урок - хороший старт для дальнейшего изучения DX8 SDK в среде Delphi 7.

 

 

для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Первый 3D-мир
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Дельфин под водой
       
       
Урок 11

Технология создания открытых 3D-пространств, billboarding. В качестве основы D3D-приложения используется расширяемя библиотека, которая служит основой всех примеров оригинального DX SDK (она входит в состав архива данного урока). Цель самого урока: познакомить с технологией вращения плоских изображений для создания иллюзии объема. Кроме того, параллельно дается пример создания простейшего открытого 3D-пространства.

 

CubeMap Tutor Приводится видоизмененый пример CubeMap: особенности - используются обновленные модули Direct3D8, D3DX8 и т.д.; - используется обновленная dll - D3DX81ab.dll и др.; - используется программирование на основе чистого WinAPI-приложения (без использования VCL).
для скачивания всех уроков нажмите кнопку СКАЧАТЬ!
Открытое пространство, иллюзия объема у плоских деревьев
  обзор примера
     
Уроки 1-11 в виде самораспаковывающегося архива - 2,38 Mb
2,38 Mb
   

 

Итак, 12 уроков по основам Direct3D8 преодолено, конечно это еще не завершение, а только начало, но теперь самое время перейти к изучению средств поддержки устройств ввода информации - клавиатуры, мыши, а также джойстиков, рулей и других игровых устройств - все это описывается в разделе:

 

Основы DirectInput8 на Delphi

Основы DirectSound на Delphi

Рабочие примеры Direct3D на Delphi 6, 7

 

 

Дополнения:

 

Для конверсии 3ds-файлов (см. ниже) используйте стандартную утилиту conv3ds из пакета DX SDK 8. Местонахождение [Путь к Microsoft DX SDK]\Bin\xfiles

 

В DX SDK9 упростилась процедура конверсии файлов 3ds max в формат x. Для этого используется встраиваемый plug-in. Получить его можно с DX9 SDK или (чтобы не скачивать весь DX9 SDK!) здесь.

 

 

Замечания

 

По запуску откомпилированных приложений из туториала по DirectX

 

Если откомпилированное приложение не работает, скорее всего оно не может найти необходимые ему файлы: модель, текстуру.

Решение: просто переместите исполнимый файл в папку, где находятся все используемые модели и текстуры.

 

По экспорту файлов-моделей 3D Studio Max (5, 7 версии) в формат х при помощи утилиты conv3ds (из папки bin\xfiles пакета DirectX SDK)

 

Прежде чем конвертировать файл в х-файл (икс-файл) нужно сначала в 3D Max’е экспортировать его (команда Export) в формат 3ds. Это связано с тем, что при обычном сохранении модели сохраняются с расширением max. Полученный файл с расширением 3ds можно конвертировать в х-файл. В DX9 SDK эта процедура упростилась! (см. выше). 

 

 

(c) Мега Информатик 2006-2010

Hosted by uCoz