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

Урок2 - Очистка памяти

В этом уроке мы продолжим разговор о создании простейшего приложения Direct3D - закраска клиентской части окна в синий цвет.

Сообщение об ошибке выводится пока в отдельном окне, для оконных приложений здесь не должно возникать проблем:


procedure TfrmD3D.ErrorOut (const Caption : PChar; const hError : HRESULT);
begin
  FActive := False;
  Cleanup;
  MessageBox (Handle, PChar(DXGErrorString (hError)), Caption, 0);
end;

Функция DXGerrorString возвращает описание ошибки, код которой передается в качестве аргумента. Эта функция представлена в модуле DirectXGraphics.

В процедуре очистки памяти объекты высвобождаются следующим образом:


procedure TfrmD3D.Cleanup;
begin
  if Assigned (FD3DDevice) then begin
     FD3DDevice._Release;
     FD3DDevice := nil;
  end;

  if Assigned (FD3D) then begin
     FD3D._Release;
     FD3D := nil;
  end;
end;

Данная процедура вызывается при выводе описания аварийной ситуации и при завершении работы приложения, в обработчике OnDestroy окна.

Обратите внимание на порядок высвобождения памяти для объектов: первыми высвобождается память для объектов, которые были созданы последними. Перед тем как высвободить память, проверяется действительно был ли создан объект.


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