Народный учебник по OpenGL


Урок 1. Инициализация в Windows - часть 10


Сейчас мы сделаем окно. Не смотря на то, что мы делаем окно здесь, это не вызовет OpenGL до тех пор, пока сообщение WM_CREATE не послано. Флаги WS_CLIPCHILDREN и WS_CLIPSIBLINGS требуются для OpenGL. Очень важно, чтобы вы добавили их здесь. Я люблю использовать всплывающее окно, оно хорошо работает в полноэкранном режиме.

        hWnd = CreateWindow(

        

"OpenGL WinClass",

        

"Jeff Molofee's GL Code Tutorial ... NeHe '99", // Заголовок вверху окна


        

WS_POPUP |

        

WS_CLIPCHILDREN |

        

WS_CLIPSIBLINGS,


        

0, 0,                   // Позиция окна на экране

        

640, 480,               // Ширина и высота окна


        

NULL,

        

NULL,

        

hInstance,

        

NULL);

Далее - обычная проверка на ошибки. Если окно не было создано по какой-то причине, сообщение об ошибке выскочит на экран. Давите OK и завершайте программу.

        if(!hWnd)

        

{

        

MessageBox(0,"Window Creation Error.","Error",MB_OK|MB_ICONERROR);

                

return FALSE;

        

}

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

Я не устанавливаю глубину цвета, когда я переключаю полноэкранный режим. Всякий раз, когда я пробовал переключать глубину цвета, я получал сверхъестественные запросы от Windows чтобы сделать перезагрузку компьютера для переключения нового режима цвета. Я не уверен, надо ли удовлетворять это сообщение, но я решил оставлять компьютер с той глубиной цвета, которая была до запуска GL программы.

Важно отметить, что этот код не будет скомпилирован на Cи. Это файл должен быть сохранен как .CPP файл.

DEVMODE dmScreenSettings;                       // Режим работы


memset(&dmScreenSettings, 0, sizeof(DEVMODE));          // Очистка для хранения установок




Начало  Назад  Вперед



Книжный магазин