Урок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)
Следующий урок - Примитивы
|