DirectX 8. Начинаем работу с DirectX Graphics - Сергей Ваткин

DirectX 8. Начинаем работу с DirectX Graphics

В этой удивительной книге вы откроете мир новых возможностей и историй, где каждый персонаж и событие приносят с собой неповторимую глубину и интригу. Автор волшебным образом сочетает элементы фантазии, приключения и человеческих драм, создавая непередаваемую атмосферу, в которой каждая страница — это путешествие в неизведанные миры. Поднимите книгу и готовьтесь погрузиться в мир, где слова становятся живыми, а истории оживают перед вашими глазами.

Читать DirectX 8. Начинаем работу с DirectX Graphics (Ваткин, Dempski) полностью

GameDev.ru

DirectX 8: Начинаем работу с DirectX Graphics

Автор: voxatu

(пример написан на основе первого "родного" туториала к DirectX SDK 8.0)

Ну, наконец-то мы дошли до самой сути, а именно - до начала работы непосредственно с DirectX! Сейчас напишем вместе прогу, которая создаст класс, окошко, инициализирует объекты Direct3D и… в итоге у нас получится — сами увидите что :-) Советую СКАЧАТЬ ПРИМЕР в архиве и читать дальше, имея исходники перед глазами. Чтобы открыть пример, необходимо сначала разархивировать его в отдельную директорию, затем нажать File->Open Workspace и открыть файл "D3D Init.dsw" из этой директории. Ну… поехали.

Сначала необходимо написать include'ы, описать глобальные переменные, которые мы будем использовать в программе, а также объявить прототипы функций:

>//Включаем все функции, необходимые для работы с D3D.

>// уже включен в этом файле

>#include

>#include //В дальнейшем нам понадобится функция sprintf()

>LPDIRECT3D8 g_pD3D = NULL; //Понадобится нам, чтобы создать D3DDevice


>//Это наше устройство rendering'а (Rendering Device)

>LPDIRECT3DDEVICE8 g_pd3dDevice = NULL;

>WNDCLASSEX wclass;

>//Объявляем прототипы функций

>VOID Init(HWND); //Инициализация D3D

>VOID Render(); //Рендеринг сцены

>VOID Sweep(); //Очистка после выполнения программы

>//Обработка сообщений, поступивших окну

>LRESULT CALLBACK MessageProc(HWND, UINT, WPARAM, LPARAM);

Что же такое Render? "Render" с английского переводится как: "переводить", "просчитывать", "визуализировать". Все объекты, которые находятся на нашей виртуальной сцене, хранятся в памяти в виде отдельных блоков: источники света, каркас, состоящий из вершин (точка в 3-D пространстве), текстуры, и т.д. Но видеокарта не может все это показать на экране, т.к. может вывести только последовательность разноцветных точек. Rendering Device как раз и выполняет эту функцию, т.е. преобразует всю нашу сцену в "понятный" для видеокарты вид.

В своих статьях я не буду переводить некоторые английские термины на русский язык, а буду их "руссифицировать" (например, я не буду переводить "rendering device", как "делательное устройство" или "устройство просчёта", а буду просто говорить "устройство рендеринга" или вообще "девайс для рендеринга" (всякое может случиться %) )). Дело не в том, что я не могу подобрать тому или иному английскому термину русский эквивалент. Просто иногда лучше пользоваться "родными" названиями (мы же не называем "Visual C" Визульным Си =-)). Едем дальше…

В нашей программе будет пять функций: функция WinMain(), Init(), Render(), Sweep() и функция обработки сообщений MessageProc(). Каждая функция представляет собой некий блок программы, который выполняет исключительно свою операцию. Например Init() будет инициализировать Direct3D (в дальнейшем, просто D3D), Render() — рендерить сцену, а Sweep() — производить очистку после выполнения программы. Я постарался, как можно больше упростить программу, поэтому урезал некоторые моменты (например, обработку ошибок, которые могут возникнуть при инициализации). В последующих программах мы будем стараться "честно" учитывать все возможные ошибки и обрабатывать их. Итак, рассмотрим подробнее, что же делают наши функции.