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

Урок3 - Функция воспроизведения

Основная нагрузка в рассматриваемом примере ложится на функцию воспроизведения Render, в которой выполняется единственное действие - экран окрашивается синим цветом:


function TfrmD3D.Render : HRESULT;
var
  hRet : HRESULT;
begin
  if FD3DDevice = nil then begin
     Result := E_FAIL;
     Exit;
  end;

  hRet := FD3DDevice.Clear(0, nil, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 0.0, 0);
  if FAILED(hRet) then begin
     Result := hRet;
     Exit;
  end;

  Result := FD3DDevice.Present(nil, nil, 0, nil);
end;

Начинается код функции с проверки присутствия объекта устройства. Этот объект может отсутствовать, если инициализация не выполнилась успешно, либо объект потерян. Последняя ситуации может возникнуть, когда, например, по ходу работы приложения меняются установки рабочего стола.

Далее в функции Render вызывается метод Clear объекта устройства. Первый и второй аргументы метода позволяют задавать очищаемую область: первый аргумент задает количество используемых прямоугольников, вторым аргументом передается указатель на массив, содержащих набор величин типа TRect. Третим аргументом метода Clear уточняются параметры очистки. Здесь указывается флаг или комбинация флагов. Константа D3DCLEAR_TARGET используется в ситуации, когда очищается цветовая поверхность устройства. Сам цвет, в который перекрашивается устройство, передается следующим параметром. Последние два аргумента в первом рассмотрении данной темы мы разбирать не будем.

Окрасив задний буфер в определенный цвет, нам остается только переставить буферы - вызываем метод Present объекта устройства.

В состоянии ожидания сообщений беспрерывно вызывается функция Render, если окно приложения не минимизировано.

Собственно, вот и все. Результат нашей работы должен выглядеть следующим образом:

Клиентская часть окна заполнена синим цветом


Полный исходный текст примера (ex1.pas, 4Kb)
Откомпилированное приложение (example1.zip, 165Kb)

Следующий урок - Примитивы