Домашняя страница Урок1 - Инициализация Direct3D Урок2 - Очистка памяти Урок3 - Функция воспроизведения Урок4 - Примитивы Урок5 - Точки Урок6 - Отрезки Урок7 - Треугольники Ссылки

Урок5 - Точки

Примитив точка, соответствующий использованию константы D3DPT_POINTLIST в качестве первого аргумента метода DrawPrimitive, приводит к тому, что для каждой порции данных, считываемых из потока, на экране вывода ставится точка.

Изучим основательнее этот примитив на следующем примере, где экран усеивается множеством точек.

Пример использования множества вершин

Теперь нам требуется массив, хранящий данные о вершинах:


const
  MAXPOINTS = 1000;

var
  VPoints : Array [0..MAXPOINTS - 1] of TCUSTOMVERTEX;

Координаты точек берутся случайно, в пределах, обусловленных размерами клиентской области окна приложения. Все остальные изменения кода предыдущей программы по большей части связаны с изменением имени переменной, хранящей вершины. Лишь в функции воспроизведения произошли важные перемены:


  hRet := FD3DDevice.BeginScene;
  if FAILED(hRet) then begin
     Result := hRet;
     Exit;
  end;

  hRet := FD3DDevice.DrawPrimitive(D3DPT_POINTLIST, 0, MAXPOINTS);
  if FAILED(hRet) then begin
     Result := hRet;
     Exit;
  end;

  hRet := FD3DDevice.EndScene;
  if FAILED(hRet) then begin
     Result := hRet;
     Exit;
  end;

Обратите внимание на использование методов BeginScene и EndScene. Действия, связанные с ними, всегда будут открывать и, соответственно, завершать код воспроизведения.


Полный исходный текст примера (ex3.pas, 5Kb)
Откомпилированное приложение (example3.zip, 105Kb)

Следующий урок - Отрезки