Составители:
Рубрика:
12
будут идентичны для полноэкранного и оконного режимов, а именно — ширина и
высота заднего буфера:
d3dpp.BackBufferWidth = iWidth;
d3dpp.BackBufferHeight = iHeight;
Здесь мы задаем ширину и высоту буфера. Далее запрашиваем у
пользователя с помощью окна MessageBox, необходимо ли отобразить окно в
полноэкранном режиме? Если да, то продолжаем заполнять структуру
параметрами, которые должны использоваться в полноэкранном режиме:
d3dpp.BackBufferFormat = D3DFMT_R5G6B5;
d3dpp.SwapEffeet = D3 DSWAPE FFECT_FLIP;
d3dpp.Windowed = FALSE;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.Presentationlnterval = D3DPRESENT_INTERVAL_DE FAULT;
В качестве формата пиксела выбран D3DFMT_R5G6B5, при котором 16 бит
для хранения цвета делятся в следующем соотношении: красный — 5 бит,
зеленый — 6 бит и голубой — 5 бит. Шестнадцать бит позволяют использовать
65535 цветов, а этого достаточно, чтобы создавать реалистичные эффекты, и при
этом производительность будет довольно высокая.
Помимо формата пиксела, для переключения буфера будем использовать
метод D3DSWAPEFFECT_FLIP, который является самым быстрым, но может
применяться только в полноэкранном режиме. Свойство Windowed устанавливаем
в false, потому что это полноэкранный режим. И самое важное — устанавливаем
частоту смены экрана в значение по умолчанию
D3DPRESENT_RATE_DEFAULT.
В случае с оконным режимом мы сначала должны изменить размеры окна
так, чтобы они соответствовали выбранным размерам. Для этого определяем
текущее положение окна и с помощью функции MoveWindow устанавливаем
новые размеры:
RECT wndRect;
RECT clientRect;
GetWindowRect(hWnd, &wndRect);
GetClientRect(hWnd, &clientRect);
int iWinWidth = iWidth + (wndRect.right-wndRect.left) -
(clientRect. right-clientRect. left1)';
int iWinHeight = iHeight + (wndRect.bottom-wndRect.top) -
(clientRect.bottom-clientRect.top);
MoveWindow(hWnd, wndRect.left, wndRect.top,
iWinWidth, iWinHeight, TRUE);
Поскольку у нас будет использоваться оконный режим, то мы не можем
выбрать формат пиксела, поэтому придется использовать тот формат, который
сейчас установлен в Windows. Для этого используется метод
GetAdapterDisplayMode интерфейса iDirect3D. Этому методу нужно передать два
параметра:
− адаптер, информацию о котором нужно получить. Мы будем
использовать первичный адаптер (D3DADAPTER_DEFAULT);
будут идентичны для полноэкранного и оконного режимов, а именно — ширина и высота заднего буфера: d3dpp.BackBufferWidth = iWidth; d3dpp.BackBufferHeight = iHeight; Здесь мы задаем ширину и высоту буфера. Далее запрашиваем у пользователя с помощью окна MessageBox, необходимо ли отобразить окно в полноэкранном режиме? Если да, то продолжаем заполнять структуру параметрами, которые должны использоваться в полноэкранном режиме: d3dpp.BackBufferFormat = D3DFMT_R5G6B5; d3dpp.SwapEffeet = D3 DSWAPE FFECT_FLIP; d3dpp.Windowed = FALSE; d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.Presentationlnterval = D3DPRESENT_INTERVAL_DE FAULT; В качестве формата пиксела выбран D3DFMT_R5G6B5, при котором 16 бит для хранения цвета делятся в следующем соотношении: красный — 5 бит, зеленый — 6 бит и голубой — 5 бит. Шестнадцать бит позволяют использовать 65535 цветов, а этого достаточно, чтобы создавать реалистичные эффекты, и при этом производительность будет довольно высокая. Помимо формата пиксела, для переключения буфера будем использовать метод D3DSWAPEFFECT_FLIP, который является самым быстрым, но может применяться только в полноэкранном режиме. Свойство Windowed устанавливаем в false, потому что это полноэкранный режим. И самое важное — устанавливаем частоту смены экрана в значение по умолчанию D3DPRESENT_RATE_DEFAULT. В случае с оконным режимом мы сначала должны изменить размеры окна так, чтобы они соответствовали выбранным размерам. Для этого определяем текущее положение окна и с помощью функции MoveWindow устанавливаем новые размеры: RECT wndRect; RECT clientRect; GetWindowRect(hWnd, &wndRect); GetClientRect(hWnd, &clientRect); int iWinWidth = iWidth + (wndRect.right-wndRect.left) - (clientRect. right-clientRect. left1)'; int iWinHeight = iHeight + (wndRect.bottom-wndRect.top) - (clientRect.bottom-clientRect.top); MoveWindow(hWnd, wndRect.left, wndRect.top, iWinWidth, iWinHeight, TRUE); Поскольку у нас будет использоваться оконный режим, то мы не можем выбрать формат пиксела, поэтому придется использовать тот формат, который сейчас установлен в Windows. Для этого используется метод GetAdapterDisplayMode интерфейса iDirect3D. Этому методу нужно передать два параметра: − адаптер, информацию о котором нужно получить. Мы будем использовать первичный адаптер (D3DADAPTER_DEFAULT); 12
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »