Составители:
Рубрика:
10
Добавим в шаблон DirectX-приложения вызов функции инициализации. Для
этого в основном модуле программы объявим две переменные для хранения
создаваемых интерфейсов на iDirect3D9 и устройство IDirect3DDevice9:
IDirect3D9 *pD3D = NULL;
IDirect3DDevice9 *pD3DDevice = NULL;
Вызов функции инициализации пишем в функции InitInstance после создания
окна, но перед отображением и перерисовкой главного окна:
// Вызов функции инициализации
// Если результат работы функции не равен S_OK,
// то произошла ошибка
if (DX3DInit(&pD3D, &pD3DDevice, hWnd, 800, 600, FALSE)!=S_OK)
{
MessageBox(hWnd, "Ошибка инициализации DirectX", "Error", MB_OK);
return FALSE;
}
// Отображение и обновление окна
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
Теперь посмотрим на содержимое файла dxfunc.cpp (листинг 1.2) и
соответственно функции DX3Dinit. В файле у нас находится только подключение
заголовочного файла dxfunc.h и непосредственно сама функция инициализации.
Листинг 1.2. Содержимое файла dxfunc.cpp
#include "dxfunc.h"
// Функция инициализации
Direct3D HRESULT DX3DInit(IDirect3D9 **ppiD3D9,
IDirect3DDevice9 **ppiD3DDevice9,
HWND hWnd, DWORD iWidth, DWORD iHeight, BOOL bFullScreen)
{
// Инициализация
if((*ppiD3D9 = Direct3DCreate9(D3D_SDK_VERSION)) = NULL)
return E_FAIL;
// Заполняем основные параметры
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof (d3dpp)) ;
d3dpp.BackBufferWidth = iWidth;
d3dpp.BackBufferHeight = iHeight;
// Запрос на отображение в полноэкранном режиме
int iRes;
if (!bFullScreen)
iRes=MessageBox(hWnd, "Use fullscreen mode?",
"Screen", MB_YESNO | MB_ICONQUESTION);
else
iRes = IDYES;
if(iRes == IDYES) {
//Полноэкранный режим
//Установка параметров полноэкранного режима
d3dpp.BackBufferFormat = D3DFMT_R5G6B5;
d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP;
Добавим в шаблон DirectX-приложения вызов функции инициализации. Для этого в основном модуле программы объявим две переменные для хранения создаваемых интерфейсов на iDirect3D9 и устройство IDirect3DDevice9: IDirect3D9 *pD3D = NULL; IDirect3DDevice9 *pD3DDevice = NULL; Вызов функции инициализации пишем в функции InitInstance после создания окна, но перед отображением и перерисовкой главного окна: // Вызов функции инициализации // Если результат работы функции не равен S_OK, // то произошла ошибка if (DX3DInit(&pD3D, &pD3DDevice, hWnd, 800, 600, FALSE)!=S_OK) { MessageBox(hWnd, "Ошибка инициализации DirectX", "Error", MB_OK); return FALSE; } // Отображение и обновление окна ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); Теперь посмотрим на содержимое файла dxfunc.cpp (листинг 1.2) и соответственно функции DX3Dinit. В файле у нас находится только подключение заголовочного файла dxfunc.h и непосредственно сама функция инициализации. Листинг 1.2. Содержимое файла dxfunc.cpp #include "dxfunc.h" // Функция инициализации Direct3D HRESULT DX3DInit(IDirect3D9 **ppiD3D9, IDirect3DDevice9 **ppiD3DDevice9, HWND hWnd, DWORD iWidth, DWORD iHeight, BOOL bFullScreen) { // Инициализация if((*ppiD3D9 = Direct3DCreate9(D3D_SDK_VERSION)) = NULL) return E_FAIL; // Заполняем основные параметры D3DPRESENT_PARAMETERS d3dpp; ZeroMemory(&d3dpp, sizeof (d3dpp)) ; d3dpp.BackBufferWidth = iWidth; d3dpp.BackBufferHeight = iHeight; // Запрос на отображение в полноэкранном режиме int iRes; if (!bFullScreen) iRes=MessageBox(hWnd, "Use fullscreen mode?", "Screen", MB_YESNO | MB_ICONQUESTION); else iRes = IDYES; if(iRes == IDYES) { //Полноэкранный режим //Установка параметров полноэкранного режима d3dpp.BackBufferFormat = D3DFMT_R5G6B5; d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP; 10
Страницы
- « первая
- ‹ предыдущая
- …
- 6
- 7
- 8
- 9
- 10
- …
- следующая ›
- последняя »