Здавалка
Главная | Обратная связь

Очистка объектов:CleanupDevice



Когда окно закрывается, нужно очистить все ранее инициализированные объекты Direct3D. Для этого предназначена небольшая функция очистки, вызываемая из MsgProc. То есть, когда приходит сообщение о закрытии окна (а также когда приходят и другие особщения) Windows вызывает MsgProc, и если окно закрывается, то мы делаем из MsgProc очистку объектов и завершение приложения.

void CleanupDevice(){ if( g_pImmediateContext ) g_pImmediateContext->ClearState(); if( g_pRenderTargetView ) g_pRenderTargetView->Release(); if( g_pSwapChain ) g_pSwapChain->Release(); if( g_pImmediateContext ) g_pImmediateContext->Release(); if( g_pd3dDevice ) g_pd3dDevice->Release();}

Цикл обработки сообщений

Перед нашей главной и глобальной функцией WinMain должна быть еще одна функция, MsgProc. Это так называемся CallBack функция, и Windows вызывает её даже самостоятельно, когда ей это потребуется. Что же касается наполнения функции MsgProc то в неё приходят различные сообщения Windows, и нужно на это как то реагировать. В дальнейшем внутрь неё вы конечно же вставите обработку клавиш «вперед, назад, влево вправо» а также обязательно «пробел» или «ctrl» для того, чтобы эффективно и быстро нажав на них уничтожать ваших ненавистных 3d– монстров из плазмомета.

LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam ){ PAINTSTRUCT ps; HDC hdc; switch( message ) { case WM_PAINT: hdc = BeginPaint( hWnd, &ps ); EndPaint( hWnd, &ps ); break; case WM_DESTROY: PostQuitMessage( 0 ); break; default: return DefWindowProc( hWnd, message, wParam, lParam ); } return 0;}

Кстати, как бонус, можно рассказать собственно как обрабатывать указанные выше клавиши, для этого нужно немного изменить пример. Скачать измененный пример можно тут.

На этом наше первое приложение завершено, с чем мы можем поздравить себя а также будущих пользователей наших Direct3D программ.

Обзор приложения

Теперь остается только скомпилировать и запустить приложение. Исходный код приложения вы можете скачать тут. Не забываем, что в системе должен быть установлен DirectX версии не ниже 11. В текущих версиях Windows, например Windows 7, а также Windows 8 всё уже установлено, так что заботиться об установке DirectX не надо, и наше приложение успешно запуститься на них и будет прекрасно функционировать.

Данное приложение всего-лишь отображает поверхность, заполненную зеленым цветом. Однако, если это произошло, то это значит что все ок, и это не мало, так как мы создали окно, инициализировали DirectX, очистили поверхность окна синим цветом, вообщем, сделали достаточно для того, чтобы приступать к отображению чего-то трехмерного, чем и займемся в дальнейших уроках.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.