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


Урок 14. Векторные шрифты - часть 10


       glEnable(GL_COLOR_MATERIAL);            // Включить раскраску материалов (новая)

 

       BuildFont();                            // Построить шрифт (добавлена)

 

       return TRUE;                            // Инициализация прошла успешно

}

 

Теперь рисующий код. Начнем с очистки экрана и буфера глубины. Для полного сброса вызовем функцию glLoadIdentity(). Затем мы смещаемся на 10 единиц вглубь экрана. Векторный шрифт великолепно смотрится в режиме перспективы. Чем дальше в экран смещаемся, тем меньше шрифт. Чем ближе, тем шрифт больше.

 

Управлять векторными шрифтами можно также при помощи команды glScalef(x,y,z). Если захотите сделать буквы в два раза выше, дайте команду glScalef(1.0f,2.0f,1.0f). Значение 2.0f здесь относится к оси Y и сообщает OpenGL, что список отображения нужно нарисовать в двойной высоте. Если это значение поставить на место первого аргумента (Х), то буквы будут в два раза шире. Ну, третий аргумент, естественно, касается оси Z.

 

int DrawGLScene(GLvoid)                  // Здесь весь вывод на экран

{

       // Очистка экрана и буфера глубины

       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

       glLoadIdentity();                 // Сброс вида

       glTranslatef(0.0f,0.0f,-10.0f);   // Смещение на 10 единиц в экран

 

После сдвига вглубь экрана мы можем повращать текст. Следующие три строки поворачивают изображение по трем осям. Умножением переменной rot на различные значения я пытался добиться как можно более различающихся скоростей вращения.

 

       glRotatef(rot,1.0f,0.0f,0.0f);          // Поворот по оси X

       glRotatef(rot*1.5f,0.0f,1.0f,0.0f);     // Поворот по оси Y

       glRotatef(rot*1.4f,0.0f,0.0f,1.0f);     // Поворот по оси Z

 

Теперь займемся цветовым циклом. Как обычно, использую здесь переменную-счетчик (rot). Возгорание и затухание цветов получается при помощи функций SIN и COS. Я делил переменную rot на разные числа, так что бы каждый цвет не возрастал с такой же скоростью. Результат впечатляющий.




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



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