Функция по выводу текста в OpenGL (Delphi)
В приложении программа реализующая сцену на OpenGL (можно скачать, а можно и написать свою). Надо написать функцию для вывода текста DrawText (text; x,y,z; var height; pos; maxwidth; gl; ax,ay,az; on): real;
text - string. Строка которую выводить.
x,y,z - это смещение в координатах сцены. это "главная" точка, относительно этой точки строится надпись.
height - высота текста (максимальная, естественно если буквы строчные, то они меньше) или размер шрифта. Функция может менять этот параметр по необходимости (т.е. передается по ссылке, а не по значению).
pos - string[3] Выравнивание. Этот параметр определяет как распределяются буквы относительно "главной" точки. Рассматривайте этот параметр как массив char, каждая буква может принимать одно из значений: l, c, и r (выравнивание по левому, по центру и по правому). первая буква отвечает за ось X, вторая Y, третья Z. Например, "llc" значит надпись находится за "главная" точкой по осям X и Y, но по середине по оси Z. Если "ccc" значит главная точка в центре надписи.
maxwidth - ограничитель на ширину текста в абсолютных числах. Пользователь задает высоту, но если строка длинная, то она может не влезть. Это предохранитель, если ширина текста получилась больше чем в этом параметре, то надо уменьшить высоту шрифта (сделать шрифт меньше), что бы вместилось. Если при вызове параметр равен 0, то проверять размер не надо. При уменьшении шрифта меняется параметр height.
gl - глубина букв. Если 0, то надпись плоская.
ax,ay,az - углы поворота по каждой оси в градусах. поворачивается вся надпись, те простой ротейт вдоль каждой оси.
on - boolean. Включено ли отображение текста. true текст выводится. false - текст не выводится (нужно для измерений, например надо узнать какой шрифт максимально возможный, поставил height побольше, задал maxwidth, прогнал с on=false все строки, функция откорректировала height, вот с ним и будем потом выводить).
Функция должна возвращать реальную ширину теста в абсолютных координатах. Что бы можно было узнать какова получилась ширина. А параметр height скажет сколько текст занимает по высоте.
ВАЖНО:
1) Текст должен поворачиваться и масштабироваться вместе со сценой, что бы можно было посмотреть на них со всех ракурсов (например, если посмотреть на буквы сверху или сбоку, то они похожи на линию).
2) Освещение включено. Буквы должны иметь полутона за счет неравномерности освещения.
3) Цвет материала должен быть включен (glEnable (GL_COLOR_MATERIAL);). Буквы должны отображаться текущим цветом (например заданным функцией glColor3f (7.0, 0.1, 0.1) заранее). Именно цвет, а не текстура выбранного цвета.