Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки? Спасибо! |
Основные графические примитивы OpenGL и их свойства
Параметры многоугольников
Библиотека OpenGL позволяет определять ряд параметров для всех типов многоугольников.
Режим отображения граней многоугольника
Библиотека OpenGL позволяет для многоугольников определять режим отображения лицевых и обратных граней. Для этого используется команда
PolygonMode (face, mode: GLenum);
В библиотеке OpenTK на C# команда реализуется с помощью статического метода класса GL:
void PolygonMode(MaterialFace face, PolygonMode mode);
В Object Pascal команда реализуется с помощью процедуры:
procedure glPolygonMode (face, mode: GLenum);
Первый параметр команды face определяет грани, для которых определяется режим отображения. Параметр может принимать значения, перечисленные в таблица 4.1.
Назначение параметра | Значение параметра | |
---|---|---|
Библиотека OpenTK, C# | Object Pascal | |
Лицевые грани многоугольников | MaterialFace.Front | GL_FRONT |
Обратные грани многоугольников | MaterialFace.Back | GL_BACK |
Лицевые и обратные грани многоугольников | MaterialFace.FrontAndBack | GL_FRONT_AND_BACK |
Второй параметр mode определяет режим отображения ( таблица 4.2).
Назначение параметра | Значение параметра | |
---|---|---|
Библиотека OpenTK, C# | Object Pascal | |
Выбранная грань будет отображаться в виде точек | PolygonMode.Point | GL_POINT |
Выбранная грань будет отображаться в виде отрезков, соединяющих вершины | PolygonMode.Line | GL_LINE |
Выбранная грань будет закрашиваться | PolygonMode.Fill | GL_FILL |
По умолчанию для лицевых и обратных граней используется режим закрашивания поверхности (GL_FILL в Object Pascal, PolygonMode.Fill – на C#).
Различные режимы отображения сторон многоугольников часто используются при отладке программ, формирующих сложные объекты.
Режим отбора граней
Режим отбора граней позволяет определить, какие из граней (лицевые, обратные) будут отображаться. Для включения и выключения режима используются команды Enable и Disable с параметром GL_CULL_FACE на Object Pascal и значением CullFace перечисления EnableCap на C#.
По умолчанию режим отбора граней отключен и отображаются лицевые и обратные грани. Для задания граней многоугольников, которые не должны отображаться используется команда:
CullFace (mode: GLenum);
В C# команда реализуется с помощью статического метода класса GL библиотеки OpenTK:
void CullFace(CullFaceMode mode);
В Object Pascal команда реализуется с помощью процедуры:
procedure glCullFace (mode: GLenum);
В качестве параметра mode задаётся значение, которое определяет не отображаемые грани. В Object Pascal для этого используются объявленные в модуле Opengl.pas констранты, в C# для этого используются значения перечисления CullFaceMode ( таблица 4.3).
Назначение параметра | Значение параметра | |
---|---|---|
Библиотека OpenTK, C# | Object Pascal | |
Не будут отображаться только лицевые грани | MaterialFace.Front | GL_FRONT |
Не будут отображаться только обратные грани | MaterialFace.Back | GL_BACK |
Не будут отображаться и лицевые и обратные грани, т.е. многоугольник отображаться не будет | MaterialFace.FrontAndBack | GL_FRONT_AND_BACK |
Режим отбора граней позволяет в ряде случаев уменьшить время формирования изображения за счет отключения формирования граней, которые никогда не видимы.
Краткие итоги
В лекции рассмотрено формирование основных примитивов библиотеки OpenGL: точек, отрезков (несвязанные отрезки, ломанная, замкнутая ломаная), треугольников (отдельные треугольники, треугольники с общей гранью и с общей вершиной), четырёхугольников (несвязанные четырёхугольники и четырёхугольники с общей гранью), многоугольников. Рассмотрены возможности изменения основных свойств этих примитивов, а также изменение режима отбора граней и отображения многоугольников.