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

Архитектура нашей программы



Урок 1. Простейшее приложение DirectX11

В этом уроке вы узнаете: как установить среду разработки для DirectX; как создавать окно; как инициализировать DirectX и получать доступ к интерфейсу Direct3Ddevice11; как отобразить наше первое окно DirectX.

Установка среды разработки DirectX11

Для того, чтобы работать с DirectX, необходимо иметь минимальные базовые навыки программирования под Windows. Более того, нужно быть неплохим программистом под Windows и хорошо знать C++, чтобы освоить DirectX и уже иметь определенный опыт написания программ под эту операционную систему. Для разработки подойдет компилятор MicrosoftVisualStudio2010. В наших примерах мы будем пользоваться MicrosoftDirectXSDK, этот SDK свободно распространяется Microsoft, так что вы легко сможете его найти в Интернете. После установки SDK в ProgramFiles вы найдете папку MicrosoftDirectX SDK. Для того, чтобы работать с нашими примерами, загрузите архив с примером, расположенный тут. Затем распакуйте папку с примером в любое место. Откройте VisualC++ и загрузите в него проект. Вы также можете создать новый проект VisualC++ на основе одних файлов .cpp. О том как это сделать, будет сказано в конце этого урока. Сейчас же разберем наш пример простейшего приложения.

Архитектура нашей программы

Наше приложение Direct3D как и последующие приложения будет иметь следующую архитектуру: Для каждой отдельной операции мы будем использовать функцию. Большинство из этих функций будут вызываться из WinMain, некоторые из MsgProc. В наших примерах мы будем рассматривать отдельно каждую функцию и её содержимое.

Главная функция приложения: WinMain

Каждое приложение Windows должно иметь функцию WinMain. Мы будем использовать эту функцию с той-же целью, что и всегда – как главную функцию программы. Рассмотрим исходный текст нашей функции WinMain:

int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { UNREFERENCED_PARAMETER( hPrevInstance ); UNREFERENCED_PARAMETER( lpCmdLine );   if( FAILED( InitWindow( hInstance, nCmdShow ) ) ) return 0; if( FAILED( InitDevice() ) ) { CleanupDevice(); return 0; }   // Цикл обработки сообщений MSG msg = {0}; while( WM_QUIT != msg.message ) { if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); } else { Render(); } } CleanupDevice(); return ( int )msg.wParam; }
 

Первое что нужно сделать, это создать главное окно программы. Мы просто сделаем вызов функции InitWindow и создадим окно. В следующих разделах этой статьи мы ознакомимся более детально со всеми функциями, которые мы вызываем из WinMain. Следующая операция – это инициализация устройства: InitDevice. В этой функции мы установим глобальные переменные а также инициализируем объекты, и наконец – в этой функции уже включится наш видеоускоритель. В данном примере мы не будем рассматривать функцию

Каждое приложение Windows имеет цикл обработки сообщений. Обработка сообщений нужна для того чтобы отслеживать поступающие в окно сообщения от системы – клавиши, сворачивание и разворачивание окна и т.п. На самом деле отслеживание сообщений будет выполнятся в функции WndProc, однако цикл обработки сообщений – это совершенно необходимая надстройка и часть любого приложения Windows и DirectX. Из этого цикла выполняется функция Render, то есть периодически будет обновятся динамически меняющееся содержимое сцены. Вы можете взглянуть на содержимое Render ниже по тексту и получить уже на 75% представление о том, вообщем, как работает наше приложение, однако архитектура DirectX11 изменена по сравнению с предыдущими версиями, так что нам нужно будет изучить все более детально. Итак, начнем.







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