Самое простое приложение необходимое нам для
дальнейшей работы мы создали. Теперь попробуем сделать так, чтобы у нас в этом
окне работало D3D8. Инициализируем самые необходимые параметры и запустим цикл
отрисовки.
В ранее приведенном коде у нас добавится несколько
фрагментов. Начнем с первого - подключение необходимых файлов :
#include <d3d8.h>
#pragma comment (lib, "d3d8.lib")
Данным образом мы подключаем заголовочный и
библиотечный файлы необходимые для компиляции нашего приложения с D3D8.
Теперь создадим необходимые нам интерфейсы :
Первый - это указатель на интерфейс IDirect3D8
- главный интерфейс для всей работы с графикой. Второй отвечает за
устройство D3D - то, что будет непосредственно работать и обрабатывать нашу
трехмерную графику.
Теперь займемся непосредственной инициализацией, в
функцию инициализации приложения AppInit() вставим следующие строки :
-- Сперва мы создаем интерфейс D3D8, который
является самым основным.
-- Затем мы получаем информацию о текущем режиме
разрешения экрана и его параметрах. Это не обходимо в дальнейшем при создании
устройства D3D, нам необходимо знать формат поверхности вторичного буфера.
-- Далее идут строки инициализации параметров представления. Мы говорим, что
будем использовать оконный режим ( d3dpp.Windowed = true ), указываем
необходимый нам метод обновления экрана ( d3dpp.SwapEffect =
D3DSWAPEFFECT_DISCARD ), и устанавливаем формат поверхности вторичного
буфера ( d3dpp.BackBufferFormat = d3ddm.Forma t).
-- Последней
строкой мы инициализируем и создаем устройство D3D. Оно у нас будет принадлежать
первичному видеоадаптеру ( D3DADAPTER_DEFAULT ), работать с
использованием аппаратного ускорения ( D3DDEVTYPE_HAL ), его оконным
контекстом будет hWnd , будет использовать программную обработку вершин (
D3DCREATE_SOFTWARE_VERTEXPROCESSING ), будет использовать нами ранее
установленные параметры представления ( &d3dpp ), и представляемое
устройство будет содержаться по указателю p_d3d_Device .
После того, как мы создали D3D, мы можем работать
с ним, а конкретнее - мы можем уже сейчас начинать отрисовку экрана средствами
D3D. Для этого нам нужно в уже созданную нами ранее функцию RenderScreen()
вставить нижеследующие строки :
-- переменная нам нужна для показа некоторого
эффекта, что бы вы могли убедиться, что наше приложение и D3D работают.
--
затем мы очищаем наше устройство - в данном случае мы очищаем вторичный буфер
определенным ( D3DCOLOR_XRGB (0, 0, c++) ) цветом. У нас этот цвет будет
постепенно изменяться - от черного к синему.
-- далее у нас идет строка
начала сцены -
-- далее у нас идет строка конца сцены - собственно говоря,
между этими строками и происходит отрисовка всего составляющего нашу сцену. Пока
у нас между ними ни чего нет - т.е. нет и сцены, точнее она пока пустая.
--
последней строкой идет вызов методы для отрисовки всего того, что мы состроили
на экране монитора.
Теперь откомпилировав и запустив это приложение,
вы увидите, что оно работает. Но это еще не все. После того как наше приложение
отработало нам необходимо удалить все созданные нами интерфейсы и занятые нами
ресурсы. Для этого в функцию WinMain() добавим, в самом конце, строку
вызова функции удаления :
DestroyDirect3D8 ();
и создадим саму эту функцию :
вот теперь все...