Урок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 - Функция воспроизведения
|