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


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


        glClearDepth(1.0);                      // Разрешить очистку буфера глубины

        

glDepthFunc(GL_LESS);                   // Тип теста глубины

        

glEnable(GL_DEPTH_TEST);                // разрешить тест глубины

Следующие пять строк разрешают плавное сглаживание (антиалиасинг - antialiasing)(которое я буду объяснять позднее) и установку экрана для перспективного просмотра. Отдаленные предметы на экране кажутся меньшими, чем ближние. Это придает сцене реалистичный вид. Перспектива вычисляется под углом просмотра 45 градусов на основе ширины и высоты окна. 0.1f, 100.0f глубина экрана.

glMatrixMode(GL_PROJECTION) сообщает о том, что следующие команды будут воздействовать на матрицу проекции. glLoadIdentity() – это функция работает подобно сбросу. Раз сцена сброшена, перспектива вычисляется для сцены. glMatrixMode(GL_MODELVIEW) сообщает, что любые новые трансформации будут воздействовать на матрицу просмотра модели. Не волнуйтесь, если вы что-то не понимаете этот материал, я буду обучать всему этому в дальнейших уроках. Только запомините, что НАДО сделать, если вы хотите красивую перспективную сцену.

        glShadeModel(GL_SMOOTH);        // разрешить плавное цветовое сглаживание

        

glMatrixMode(GL_PROJECTION);    // Выбор матрицы проекции

        

glLoadIdentity();               // Сброс матрицы проекции

        

gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);

                                

// Вычислить соотношение геометрических размеров для окна

        

glMatrixMode(GL_MODELVIEW);     // Выбор матрицы просмотра модели

}

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




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



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