
|
|
Создание и отрисовка одного треугольника
После того, как мы создали с вами простое приложение и инициализировали D3D8, мы можем начать рисовать то, что нам необходимо. В данном уроке мы научимся создавать и рисовать одиночный треугольник (точнее два треугольника :). Я надеюсь, что вы уже знакомы с основами трехмерной геометрии, поэтому не буду здесь приводит выкладки по данной теме. Приступим сразу к реализации данных принципов с использованием D3D8. Начнем с реализации и отрисовки двухмерных треугольников. Мы будем использовать концепцию буферов вершин (Vertex buffers) - они используются для хранения и отображения вершин. Вершины могут быть объявлены многими различными способами указанием пользовательской структуры для одной вершины и соответствующего пользовательского гибкого формата вершины (flexible vertex format - FVF). Для формата вершины мы будем использовать нижеследующее объявление : оно показывает, что у нашей вершины будут такие параметры, как положение ( X , Y , Z ), для уже трансформированной вершины (у нас двухмерный случай, не забыли?) параметр RHW , и цвета ( color ). Далее нам необходимо объявить FVF : мы показываем, что наша вершина содержит компоненты положения и трансформации ( D3DFVF_XYZRHW ) и компоненту цвета( D3DFVF_DIFFUSE ). Далее, после того как у нас объявлен формат вершины, мы можем инициализировать вершины в буфере вершин. Для этого нам понадобится указатель на интерфейс буфера вершин IDirect3DVertexBuffer8 : Теперь все первоначальные настройки у нас готовы и мы можем приступать к самой интересной части - инициализация вершин и вывод треугольников на экран. Начнем, соответственно, с инициализации вершин в буфере вершин : -- Сперва мы инициализируем наши вершины, всего
шеть штук, задаем им необходимые параметры положения и цвета. -- Блокируем буфер вершин для доступа, Теперь у нас есть готовый к дальнейшей работе буфер вершин. Теперь нам необходимо отобразит на экране. Делаем это следующим образом, в функцию отрисовки экрана RenderScreen() , между строками начала и конца сцены, вставляем следующие строки, которые будут рисовать наши треугольники : -- Первой строкой мы даем знать D3D о том, какой
тип вершин мы будем сейчас использовать. Теперь запустив приложение вы должны увидеть нечто следующее :
Вот и все... Ах да, чуть не забыл, после работы с интерфейсом буфера вершин, его также необходимо удалить в функции DestroyDirect3D8() : _RELEASE_ (p_VertexBuffer); Вот теперь все... |
![]() |