На главную страницу Написать письмо Добавить в избранное Сделать www.comprog.ru стартовой

Создание D3D8 работающего в оконном режиме

Самое простое приложение необходимое нам для дальнейшей работы мы создали. Теперь попробуем сделать так, чтобы у нас в этом окне работало 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 ();

и создадим саму эту функцию :

вот теперь все...

  Поиск по сайту
  
Яндекс цитирования