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


Урок 17 по OpenGL. Двухмерные шрифты из текстур - часть 13


 

// Поворачиваемся по X и Y на 90 градусов (слева на право)

glRotatef(90.0f,1.0f,1.0f,0.0f);

glBegin(GL_QUADS);                 // Рисуем второй текстурированный четырехугольник

              glTexCoord2d(0.0f,0.0f); // Первая точка на текстуре

              glVertex2f(-1.0f, 1.0f); // Первая вершина

              glTexCoord2d(1.0f,0.0f); // Вторая точка на текстуре

              glVertex2f( 1.0f, 1.0f); // Вторая вершина

              glTexCoord2d(1.0f,1.0f); // Третья точка на текстуре

              glVertex2f( 1.0f,-1.0f); // Третья вершина

              glTexCoord2d(0.0f,1.0f); // Четвертая точка на текстуре

              glVertex2f(-1.0f,-1.0f); // Четвертая вершина

       glEnd();                        // Заканчиваем рисовать четырехугольник

 

После того как нарисованы четырехугольники, разрешаем смешивание и рисуем текст.

 

       glEnable(GL_BLEND);         // Разрешаем смешивание

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

 

Мы используем такой же код для раскрашивания, как в предыдущих примерах с текстом. Цвет меняется постепенно по мере движения текста по экрану.

 

       // Изменение цвета основывается на положении текста

       glColor3f(1.0f*float(cos(cnt1)),1.0f*float(sin(cnt2)),

              1.0f-0.5f*float(cos(cnt1+cnt2)));

 

Затем мы рисуем текст. Мы все еще используем glPrint(). Первый параметр - это координата x. Второй - координата y. Третий параметр ("NeHe") - текст, который надо написать на экране, и последний это набор символов (0 - обычный, 1 - наклонный).

 

Как вы могли заметить, мы двигаем текст по экрану используя SIN и COS, используя счетчики cnt1 и cnt2. Если вы не понимаете, что делают SIN и COS, вернитесь и прочитайте тексты предыдущих уроков.

 

       // Печатаем GL текст на экране

       glPrint(int((280+250*cos(cnt1))),int(235+200*sin(cnt2)),"NeHe",0);

       glColor3f(1.0f*float(sin(cnt2)),

              1.0f-0.5f*float(cos(cnt1+cnt2)),1.0f*float(cos(cnt1)));




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



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