Составители:
Рубрика:
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
- …
- следующая ›
- последняя »