На главную страницу Написать письмо Добавить в избранное Сделать www.comprog.ru стартовой

Использование полноэкранного режима D3D8

В предыдущем уроке мы научились создавать и отображать простейшие примитивы (треугольники) в двухмерном пространстве. Они были нам необходимы для наглядного представления настоящего урока. Теперь мы научимся использовать D3D8 в полноэкранном режиме. Данная тема не освещена в известных мне источниках, так что надеюсь вам данный урок тоже поможет и будет полезен.

Для использования D3D8 в полноэкранном режиме нам необходимо знать, как необходимо производить инициализацию, кроме того, нам будет необходимо научиться производить обнаружение доступных видео режимов.

Создадим для этого примера и последующей работы диалоговое окно следующего вида :

здесь мы можем выбирать между режимом отображения (оконное или полноэкранное) и выбирать размер окна (для оконного) или разрешение, глубину и частоту обновления экрана (для полноэкранного режима).

Для работы этого диалога нам необходима вызвать функцию его отображения в функции AppInit () :

создать несколько необходимых переменных, которые мы будем использовать для хранения информации о том, используем ли мы полный экран, если НЕТ, то нам понадобятся две переменные для хранения выбраного размера окна, а если ДА, то струтура для хранения данных об выбранном режиме экрана :

а также создать для этого диалога функцию обработки сообщений :

Данная функция обработки весьма простая и я надеюсь здесь все понятно, единственные важные строки, в которых мы производим обнаружение доступных нам видеорежимов :

Здесь -

-- мы сначала создаем временный интерфейс D3D8, необходимый нам для получения информации о доступных видеорежимах ( LPDIRECT3D8 p_d3dt = Direct3DCreate8 (D3D_SDK_VERSION); ),
-- затем получаем общее их количество ( int allVideoModes = p_d3dt->GetAdapterModeCount (D3DADAPTER_DEFAULT); ),
-- и последнее - для каждого видеорежима мы получаем данные которые его описывают (как то ширина, высота, глубина цвета - точнее формат поверхности, и частоту обновления) ( p_d3dt->EnumAdapterModes (D3DADAPTER_DEFAULT, i, &d3ddm2); )

потом по полученой информации о формате поверхности, мы решаем какую глубину цвета это обозначает
и затем заносим полученные данные в список, из которого мы можем его выбрать.

 

После того как наш диалог отработал, и мы уже знаем необходимую нам информацию мы переходим к следующему шагу - создание окна. В зависимости от того, используем ли мы полноэкранный режим или нет, мы должны создавать окно с разными параметрами :

And also with different parameters we should do initialization D3D8 :

Здесь нам интересны строчки инициализации полноэкранного режима.

-- сначала устанавливаем ширину и высоту экрана,
-- количество вторичных буферов,
-- частоту обновления экрана,

-- потом устанавливаем флаг того, что мы не будем использовать оконное приложение ( d3dpp.Windowed = false;   //   ! isFullScreen )
-- и задаем формат, нам необходимый,
-- и метод обновления экрана.

 

Все остальное остается без изменений.

На этом данный урок заканчивается...

  Поиск по сайту
  
Яндекс цитирования