Программируем игры на DirectX: различия между версиями
Содержимое удалено Содержимое добавлено
Oleg4280 (обсуждение | вклад) |
Исправил грамматические ошибки. |
||
Строка 13:
</source>
Дальше мы должны подключить заголовочные
<source lang="cpp">
//Подключаем
#include <windows.h>
#include <d3d9.h>
Строка 30:
int g_iWindowWidth = 800; //Ширина окна
int g_iWindowHeight = 600; //Высота окна
bool g_bApplicationState = true; //Состояние приложения (true - работает/false -
IDirect3D9 *g_pDirect3D = NULL; //Интерфейс для создания устройства рендеринга
IDirect3DDevice9 *g_pDirect3DDevice = NULL; //Интерфейс устройства рендеринга
Строка 68:
if(!RegisterClassEx(&wc)) //Регистрируем класс в Windows
{
Shutdown(); //
MessageBox(NULL,"Can`t register window class","Error",MB_OK|MB_ICONERROR); //Выводим сообщение
return 0; //Завершаем работу приложения
Строка 139:
}
return DefWindowProc(hWnd,iMsg,wParam,lParam); //Если нету для нас нужных сообщений, пусть это обрабатывает
}
</source>
Строка 156:
HRESULT hr = NULL; //Создаем переменную для записи в неё результатов работы функций
D3DDISPLAYMODE DisplayMode; //Структура для получения информации о режиме отображения в
hr = g_pDirect3D->GetAdapterDisplayMode( //Получаем режим отображения
D3DADAPTER_DEFAULT, //Используем первичную видеокарту
Строка 162:
if(FAILED(hr)) //Если не получилось
return false; //
PresParam.hDeviceWindow = g_hWnd; //Дескриптор окна
Строка 172:
PresParam.AutoDepthStencilFormat = DepthFormat; //Формат буфера глубины
PresParam.SwapEffect = D3DSWAPEFFECT_FLIP; //Режим смены кадров
PresParam.BackBufferFormat = DisplayMode.Format;//Устанавливаем формат пикселя
hr = g_pDirect3D->CreateDevice( //Создаем устройство рендеринга
D3DADAPTER_DEFAULT, //Используем первичную видеокарту
D3DDEVTYPE_HAL, //Устройства рендеринга использует возможности видеокарты
g_hWnd, //Дескриптор окна
D3DCREATE_HARDWARE_VERTEXPROCESSING, //Обрабатываем
&PresParam, //Отдаем параметры устройства
&g_pDirect3DDevice); //Создаем устройство рендеринга
if(SUCCEEDED(hr)) //Если получилось
return true; //
hr = g_pDirect3D->CreateDevice( //Создаем устройство рендеринга
Строка 189 ⟶ 188 :
D3DDEVTYPE_HAL, //Устройства рендеринга использует возможности видеокарты
g_hWnd, //Дескриптор окна
D3DCREATE_MIXED_VERTEXPROCESSING, //Обрабатываем
&PresParam, //Отдаем параметры устройства
&g_pDirect3DDevice); //Создаем устройство рендеринга
if(SUCCEEDED(hr)) //Если получилось
return true; //
hr = g_pDirect3D->CreateDevice( //Создаем устройство рендеринга
Строка 200 ⟶ 199 :
D3DDEVTYPE_HAL, //Устройства рендеринга использует возможности видеокарты
g_hWnd, //Дескриптор окна
D3DCREATE_SOFTWARE_VERTEXPROCESSING, //Обрабатываем
&PresParam, //Отдаем параметры устройства
&g_pDirect3DDevice); //Создаем устройство рендеринга
if(SUCCEEDED(hr)) //Если получилось
return true; //
return false; //
}
</source>
Приступим к написанию функции, которая будет рисовать кадры. У устройства рендеринга есть свои недостатки - потеря устройства. потеря устройства возникает например в случаях когда полноэкранное окно не в фокусе и
<source lang="cpp">
Строка 227 ⟶ 226 :
D3DCOLOR_XRGB(0,0,0), //Цвет в который очищаем задний буфер, в нашем случае черный
1.0f, //Очищаем буфер глубины, заполнив его единицами
0L); //Этот
g_pDirect3DDevice->BeginScene(); //Начало сцены
Строка 235 ⟶ 234 :
</source>
Ну и последняя функция, которая будет освобождать
<source lang="cpp">
Строка 255 ⟶ 254 :
g_hWnd = NULL; //Устанавливаем дескриптор окна в ноль
if(!UnregisterClass("Lesson 1",g_hInstance)) //Если не получилось удалить наше
g_hInstance = NULL; //Устанавливаем дескриптор приложения в ноль
}
Строка 262 ⟶ 261 :
Теперь компилируем и смотрим что получилось)
Мы написали приложение которое инициализирует Direct3D в оконном режиме, а в
[[Категория:Компьютерные игры]]
|