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


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


Наконец, мы восстанавливаем из стека GL_LIST_BIT - установки OpenGL обратно по состоянию на тот момент. Как они были перед установкой базовых значений командой glCallLists(base).

 

       // Создает списки отображения текста

       glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);

       glPopAttrib(); // Восстанавливает значение Display List Bits

                    }

 

Участок программы, отвечающий за размеры в окне OpenGL, точно такой же, как и в уроке N 1, поэтому здесь мы его пропустим.

В конец функции InitGL добавилось несколько новых строк. Строка с выражением BuildFont() из 13 урока осталась прежней, вместе с новым кодом, который создает быстрое и черновое освещение. Источник света Light0 встроен в большинство видеокарт, поэтому достаточно приемлемое освещение сцены не потребует особых усилий с нашей стороны.

 

Еще я добавил команду glEnable(GL_Color_Material). Поскольку символы являются 3D-объектами, вам понадобится раскраска материалов (Material Coloring). В противном случае смена цвета с помощью glColor3f(r,g,b) не изменит цвет текста. Если у вас на экран выводятся кроме текста другие фигуры-объекты 3D-сцены, включайте раскраску материалов перед выводом текста и отключайте сразу после того, как текст будет нарисован, иначе будут раскрашены все объекты на экране.

 

int InitGL(GLvoid)                             // Здесь будут все настройки для OpenGL

{

       glShadeModel(GL_SMOOTH);                // Включить плавное затенение

       glClearColor(0.0f, 0.0f, 0.0f, 0.5f);   // Черный фон

       glClearDepth(1.0f);                     // Настройка буфера глубины

       glEnable(GL_DEPTH_TEST);                // Разрешить проверку глубины

       glDepthFunc(GL_LEQUAL);                 // Тип проверки глубины

       // Действительно хорошие вычисления перспективы

       glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

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

       glEnable(GL_LIGHTING);                  // Разрешить освещение                        (новая)




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



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