Составители:
Рубрика:
11
d3dpp.Windowed = FALSE;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.Presentationlnterval = D3DPRESENT_INTERVAL_DEFAULT;
}
else {
//Оконный режим
RECT wndRect;
RECT clientRect;
GetWindowRect(hWnd, &wndRect);
GetClientRect(hWnd, &clientRect);
int iWinWidth = iWidth + (wndRect.right-wndRect.left) -
(clientRect.right-clientRect.left);
int iWinHeight = iHeight + (wndRect.bottom-wndRect.top) -
(clientRect.bottom-clientRect.top);
MoveWindow(hWnd, wndRect.left, wndRect.top,
iWinWidth, iWinHeight, TRUE);
// Получить формат пиксела D3DDISPLAYMODE d3ddm;
(*ppiD3D9)->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
// Установка параметров
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = TRUE;
// Создать ЗD-устройство
DWORD Flags= D3DCREATE_MIXED_VERTEXPROCESSING |
D3DCREATE_MULTITHREADED;
HRESULT hRes;
if(FAILED(hRes = (*ppiD3D9)->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL, hWnd, Flags,
&d3dpp, ppiD3DDevice9)))
return hRes;
// Установить перспективу
float Aspect =
(float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight;
D3DXMATRIX matProjection;
D3DXMatrixPerspectiveFovLH(&matProjection, D3DX_PI/4.Of,
Aspect, 10.Of, 1000.Of);
(*ppiD3DDevice9)->SetTransform(D3DTS_PROJECTION, matProjection);
return S_OK;
}
}
Давайте рассмотрим содержимое листинга и познакомимся с функциями
инициализации Direct3D.
Первое, что мы делаем, — создаем экземпляр интерфейса iDirect3D9 с
помощью функции Direct3DCreate9 и сохраняем результат в переменной
*ppiD3D9.
Далее заполняется структура типа D3DPRESENT_PARAMETERS, которая
определяет параметры представления. Заполняем основные свойства, которые
d3dpp.Windowed = FALSE;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.Presentationlnterval = D3DPRESENT_INTERVAL_DEFAULT;
}
else {
//Оконный режим
RECT wndRect;
RECT clientRect;
GetWindowRect(hWnd, &wndRect);
GetClientRect(hWnd, &clientRect);
int iWinWidth = iWidth + (wndRect.right-wndRect.left) -
(clientRect.right-clientRect.left);
int iWinHeight = iHeight + (wndRect.bottom-wndRect.top) -
(clientRect.bottom-clientRect.top);
MoveWindow(hWnd, wndRect.left, wndRect.top,
iWinWidth, iWinHeight, TRUE);
// Получить формат пиксела D3DDISPLAYMODE d3ddm;
(*ppiD3D9)->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
// Установка параметров
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = TRUE;
// Создать ЗD-устройство
DWORD Flags= D3DCREATE_MIXED_VERTEXPROCESSING |
D3DCREATE_MULTITHREADED;
HRESULT hRes;
if(FAILED(hRes = (*ppiD3D9)->CreateDevice(
D3DADAPTER_DEFAULT,
D3DDEVTYPE_HAL, hWnd, Flags,
&d3dpp, ppiD3DDevice9)))
return hRes;
// Установить перспективу
float Aspect =
(float)d3dpp.BackBufferWidth / (float)d3dpp.BackBufferHeight;
D3DXMATRIX matProjection;
D3DXMatrixPerspectiveFovLH(&matProjection, D3DX_PI/4.Of,
Aspect, 10.Of, 1000.Of);
(*ppiD3DDevice9)->SetTransform(D3DTS_PROJECTION, matProjection);
return S_OK;
}
}
Давайте рассмотрим содержимое листинга и познакомимся с функциями
инициализации Direct3D.
Первое, что мы делаем, — создаем экземпляр интерфейса iDirect3D9 с
помощью функции Direct3DCreate9 и сохраняем результат в переменной
*ppiD3D9.
Далее заполняется структура типа D3DPRESENT_PARAMETERS, которая
определяет параметры представления. Заполняем основные свойства, которые
11
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »
