Продолжим наше рисование... Здесь мы отобразим точки, линии и т.д.
Для этого мы добавим в 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 вершины.
Общая картина выглядит так:
Можно также нарисовать D3DPT_TRIANGLESTRIP и D3DPT_TRIANGLEFAN, но это я Вам оставлю как для домашнего задания :). Для более полной информации смотрите "Шаг 33 - Описание перечисляемого типа D3DPRIMITIVETYPE".