Урок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)
Следующий урок - Отрезки
|