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


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


 

GLvoid KillFont(GLvoid)                // Удаляем шрифт из памяти

{

       glDeleteLists(base,256);        // Удаляем все 256 списков отображения

}

 

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

 

glPrint() имеет четыре параметра. Первый это координата x на экране (позиция слева на право). Следующая это y координата на экране (сверху вниз... 0 внизу, большие значения наверху). Затем нашу строку string (текст, который мы хотим напечатать), и, наконец, переменную set. Если посмотреть на картинку, которую сделал Giuseppe D'Agata, можно заметить, что там два разных набора символов. Первый набор - обычные символы,  а второй набор - наклонные. Если set = 0, то выбран первый набор. Если set = 1 или больше, то выбран второй набор символов.

 

GLvoid glPrint(GLint x, GLint y, char *string, int set) // Где печатать

{

 

Первое, что мы сделаем - это проверим, что set от 0 до 1. Если set больше 1, то присвоим ей значение 1.

 

       if (set>1)                     // Больше единицы?

       {

              set=1;                  // Сделаем Set равное единице

       }

 

Теперь выберем нашу текстуру со шрифтом. Мы делаем это только, если раньше была выбрана другая текстура, до того как мы решили печатать что-то на экране.

 

       glBindTexture(GL_TEXTURE_2D, texture[0]);       // Выбираем нашу текстуру шрифта

 

Теперь отключим проверку глубины. Причина того, почему я так делаю, в том, что смешивание работает приятнее. Если не отменить проверку глубины, то текст может проходить за каким-нибудь объектом, или смешивание может выглядеть неправильно. Если вы не хотите смешивать текст на экране (из-за смешивания, т.е прозрачности черный фон вокруг символов не виден) можете оставить проверку глубины.




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



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