На прошлых уроках мы уже научились создавать и
рендерить треугольники (пока еще правда 2D) на экране монитора. Пришло время
переходить к трехмерным координатам. Вся трехмерная геометрия основана на
использовании матриц, сами матрицы мы создавать не будем, эту обязанность будет
выполнять D3D8, вам только нужно уметь мыслить в трех измерениях (хотя это и не
обязательно), а желательно знать некоторые основы трехмерной геометрии и
трехмерного же пространства.
В общем, переходим прямо к делу...
Главное что у нас появляется при переходе от 2D к
3D это новая координата (Z), поэтому нам необходимо в объявлении наших вершин
слегка изменить код :
Соответственно нам необходимо изменить объявление
наших вершин для примера :
Подготовительные шаги сделаны.
Теперь возьмемся за ту часть, которая обеспечит
нам переход из двухмерного пространства в трехмерное. Здесь мы вводим в
рассмотрение три матрицы :
-- матрица вращения (по ней будет вращаться вся
наша трехмерная сцена), -- матрица вида (показывает в какой точке находимся
мы, куда смотрим и что видим), -- и матрица проекции (показывает D3D8 как
ему нужно проецировать, т.е. отображать, трехмерную сцену на двухмерной
плоскости нашего монитора)
Далее нам необходимо задать этим матрицам
начальные значения :
В данном конкретном виде мы получаем :
-- ставим вращение сцены равное 0 (я не знаю
почему, но не писать данную строчку вообще нельзя - просто ни чего работать не
будет) -- матрица вида - для ее задания используются несколько параметров :
-- точка, где находится наблюдатель, -- точка
на которую смотрит наблюдатель, -- и верхний вектор зрения наблюдателя.
-- матрица задания проецирования тоже содержит
несколько необходимых параметров :
-- первое задаем поле зрение (field of view)
-- затем устанавливаем соотношение геометрических размеров (aspect ratio)
-- два последних параметра задают передний и задний границы отсечения
трехмерной геометрии, за этими границами ничего отрисовываться не будет.
После того как вы их создали их нужно установит
для вашего устройства D3D8 :
Я создал для этого отдельную функцию, так как
установка параметров вам также потребуется в случае, когда вы сбросили параметры
устройства (смотрите прошлый урок).
Теперь функция рендеринга вашей сцены будет
выглядеть примерно так :
Так как э нас пока нет источников света (об этом в
будущих уроках), то я заставил D3D8 очищать фон нашего приложения различным (от
черного) цвета, и вы увидите вращающиеся, черные треугольники. Но для этого
нужно дать вам еще одну функцию, которая вызывается в выше данной :
У вас должно получиться нечто похожее на следующее
: