OpenGL в Delphi

       

Масштабирование


Мы уже знаем, что границы области вывода лежат в пределах от -1 до 1 Это может привести к неудобству при подготовке изображений К счастью, OpenGL предоставляет удобное средство на этот случай - масштабирование
Разберем его на примере программы построения фигуры, показанной на рис 2. 8.Для изменения масштаба используется команда glScalef с тремя аргументами, представляющими собой масштабные множители для каждой из осей.
Например, если перед командными скобками вставим строку

glScalef (0. 5, 0. 5, 1. 0);,

то будет нарисована уменьшенная в два раза фигура (готовый проект располагается в подкаталоге Ex50).После команд рисования необходимо восстановить нормальный масштаб, т. e в данном случае добавить строку:

glScalef (2. 0, 2. 0, 1. 0);.

Есть и другой способ запоминания/восстановления текущего масштаба, но о нем мы поговорим позднее. Восстанавливать масштаб необходимо для того, чтобы каждое последующее обращение к обработчику перерисовки экрана не приводило бы к последовательному уменьшению/увеличению изображения В принципе, можно использовать и флаги для того, чтобы обратиться к строке единственный раз в ходе работы приложения.
Масштабные множители могут иметь отрицательные значения, при этом изображение переворачивается по соответствующей оси. Иллюстрирующий это свойство проект находится в подкаталоге Ex51.
При двумерных построениях значение коэффициента по оси Z безразлично, единица взята без особых соображений.



Содержание раздела