Немного подправим предыдущий "Шаг 9 - Создаем Direct3D при помощи MFC".
После всех #include поставим:
#define _RELEASE_(p) { if(p) { (p)->Release(); (p)=NULL; };}; #define _DELETE_(p) { if(p) { delete (p); (p)=NULL; };};
Для более подробной информации смотрите "Шаг 1 - Инициализация оконного приложения". Перенесите инициализацию устройств Direct3D в наш класс:
class CMainWnd : public CFrameWnd { public: CMainWnd(); // Конструктор по умолчанию private: LPDIRECT3D8 p_d3d; // наш главный интерфейс LPDIRECT3DDEVICE8 p_d3d_Device; // наше устройство d3d8 };
И напишем деструктор. Для этого щелкнем правой кнопкой мышки на класс CMainWnd отображаемый в окне Class View:
Далее выберем Add -> Add Function (Добавить->Добавить Функцию), в появившемся окне выбираем из выпадающего списка void и пишем название деструктора:
Переходим в него и добавляем код:
CMainWnd::~CMainWnd(void) { _RELEASE_(p_d3d_Device); _DELETE_(p_d3d_Device); _RELEASE_(p_d3d); _DELETE_(p_d3d); }
Вначале удаляется устройство, а затем только сам Direct3D и ни в коем случае не наоборот.