Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Основные графические примитивы OpenGL и их свойства
Режим сглаживания точки
Управление режимом сглаживания точки осуществляется с помощью команд Enable и Disable. Команда Enable включает режим сглаживания точек, команда Disable отключает его. По умолчанию режим сглаживания точек отключен.
В Object Pascal эти команды реализованы с помощью процедур:
procedure glEnable(cap: GLenum); procedure glDisable(cap: GLenum);
Для управления режимом сглаживания точек в качестве значения параметра должна быть указана константа GL_POINT_SMOOTH.
В библиотеке OpenTK для реализации этих команд используются статические методы класса GL (C#):
void Enable(EnableCap cap); void Disable(EnableCap cap);
Для управления режимом сглаживания необходимо указать значение PointSmooth перечисления EnableCap.
При отключенном режиме сглаживания точка рисуется в виде квадрата. При включенном режиме сглаживания библиотека пытается изобразить точку в виде круга. На рис. 4.1 приведены изображения точки разных размеров с выключенным (изображения слева) и включенным (изображения справа) режимом сглаживания.
Отрезки
Библиотека реализует три примитива для формирования отрезков.
Несвязанные отрезки
Для формирования несвязанных отрезков значение параметра команды Begin должно быть равно значению Lines перечисления BeginMode при использовании библиотеки OpenTK (C#) и константе GL_LINES в программе на Object Pascal.
Каждая пара вершин определяет отрезок. Если задано нечетное количество вершин, то последняя вершина игнорируется и не будет использоваться для построения отрезков. Если будет задана всего одна вершина, то библиотека не сможет построить ни одного отрезка, так как для создания отрезка требуется как минимум 2 вершины. В "Структура приложений, использующих OpenGL" был приведен пример формирования несвязанных отрезков. В пример 4.1 и пример 4.2 формируется три несвязанных отрезка, хотя вершин задано 7. Последняя вершина игнорируется ( рис. 4.2).
Ломаные линии
Для формирования ломаных линий значение параметра команды Begin должно быть равно значению LineStrip перечисления BeginMode при использовании библиотеки OpenTK (C#) и константе GL_LINE_STRIP в программе на языке Object Pascal.
При формировании этого примитива каждая вершина, начиная с третьей (первые две вершины используются для построения первого отрезка), будет соединяться отрезком с предыдущей вершиной. Т. е. каждая вершина, начиная со второй, используется для создания очередного отрезка.
Если в листинге 4.1 заменить параметр процедуры glBegin на GL_LINE_STRIP, а в листинге 4.2 заменить параметр метода GL.Begin на BeginMode.LineStrip, то будут сформированы 6 отрезков: один отрезок по первым двум вершинам и пять отрезков по другим пяти вершинам ( рис. 4.3).
Замкнутая ломаная
Для формирования замкнутой ломаной необходимо задать значение параметра mode команды Begin:
- константу GL_LINE_LOOP в программе на языке Object Pascal;
- значение LineLoop перечисления BeginMode в программе на языке C#.
Примитив формируется аналогично ломаной линии с одним дополнением: отрезком так же соединяются первая и последняя вершина. Таким образом, в результате получается замкнутая ломаная.
Если в листинге 4.1 программы на C# заменить параметр метода GL.Begin на значение LineLoop перечисления BeginMode, то будут сформированы 7 отрезков ( рис. 4.4). По сравнению с рис. 4.3 появляется еще один отрезок, который соединяет первую и последнюю вершину.
Чтобы получить аналогичный результат в программе на Object Pascal, фрагмент которой приведен в листинге 4.2, необходимо заменить параметр процедуры glBegin на константу GL_LINE_LOOP.