Шаг 6 - Рисуем простейшие фигурки

Продолжим наше рисование... Здесь мы отобразим точки, линии и т.д.

Для этого мы добавим в g_Vertices[] сначала координаты точки.

{  30.0f,  30.0f, 0.5f, 1.0f, 0xffffff00, },

Дальше изменим функцию:

p_d3d_Device->CreateVertexBuffer (7*sizeof(CUSTOMVERTEX), 
	0, 
	D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, 
	&p_VertexBuffer);

т.к. сейчас уже распределяем память под семь вершин.

В RenderScene() перед EndScene добавьте:

p_d3d_Device->DrawPrimitive (D3DPT_POINTLIST, 6, 1);

т.е. координата находится на седьмом месте в массиве (массив начинает отсчет с 0) и использовать только одну вершину. Компилируем и запускаем. Появится желтая точка слева сверху от первого треугольника.

Теперь добавим синию линию. Снова в g_Vertices[] добавляем вершины:

{ 100.0f,  30.0f, 0.5f, 1.0f, 0x000000ff, },
{ 500.0f,  30.0f, 0.5f, 1.0f, 0x000000ff, },

В CreateVertexBuffer() укажим теперь вместо 7 значение 9. И перед EndScene пишем:

p_d3d_Device->DrawPrimitive (D3DPT_LINELIST, 7, 1);

Седьмое и восьмое значение в массиве отданы прорисовке линии, рисуем только одну линию.

Нарисуем ломанную линию, для этого пишем координаты вершин:

{  10.0f, 250.0f, 0.5f, 1.0f, 0xffffff00, },
{  80.0f, 300.0f, 0.5f, 1.0f, 0xffffff00, },
{ 160.0f, 300.0f, 0.5f, 1.0f, 0x000000ff, },
{ 200.0f, 250.0f, 0.5f, 1.0f, 0x000000ff, },

В CreateVertexBuffer указываем теперь 13 и рисуем:

p_d3d_Device->DrawPrimitive (D3DPT_LINESTRIP, 9, 3);

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

Общая картина выглядит так:

6_1.jpg (21274 b)

Можно также нарисовать D3DPT_TRIANGLESTRIP и D3DPT_TRIANGLEFAN, но это я Вам оставлю как для домашнего задания :). Для более полной информации смотрите "Шаг 33 - Описание перечисляемого типа D3DPRIMITIVETYPE".


Загрузить проект | Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Хавов Евгений Валерьевич - 10.08.2002 (обновлено 23.08.2002)