Опубликован: 02.12.2011 | Доступ: свободный | Студентов: 980 / 117 | Оценка: 5.00 / 4.00 | Длительность: 09:26:00
Специальности: Программист
Теги: .net, open source, opengl
Лекция 5:

Основные графические примитивы OpenGL и их свойства

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >

Параметры многоугольников

Библиотека 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.

Таблица 4.1. Возможные значения параметра face команды PolygonMode
Назначение параметра Значение параметра
Библиотека OpenTK, C# Object Pascal
Лицевые грани многоугольников MaterialFace.Front GL_FRONT
Обратные грани многоугольников MaterialFace.Back GL_BACK
Лицевые и обратные грани многоугольников MaterialFace.FrontAndBack GL_FRONT_AND_BACK

Второй параметр mode определяет режим отображения ( таблица 4.2).

Таблица 4.2. Возможные значения параметра mode команды PolygonMode
Назначение параметра Значение параметра
Библиотека 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).

Таблица 4.3. Возможные значения параметра mode команды CullFace
Назначение параметра Значение параметра
Библиотека OpenTK, C# Object Pascal
Не будут отображаться только лицевые грани MaterialFace.Front GL_FRONT
Не будут отображаться только обратные грани MaterialFace.Back GL_BACK
Не будут отображаться и лицевые и обратные грани, т.е. многоугольник отображаться не будет MaterialFace.FrontAndBack GL_FRONT_AND_BACK

Режим отбора граней позволяет в ряде случаев уменьшить время формирования изображения за счет отключения формирования граней, которые никогда не видимы.

Краткие итоги

В лекции рассмотрено формирование основных примитивов библиотеки OpenGL: точек, отрезков (несвязанные отрезки, ломанная, замкнутая ломаная), треугольников (отдельные треугольники, треугольники с общей гранью и с общей вершиной), четырёхугольников (несвязанные четырёхугольники и четырёхугольники с общей гранью), многоугольников. Рассмотрены возможности изменения основных свойств этих примитивов, а также изменение режима отбора граней и отображения многоугольников.

< Лекция 4 || Лекция 5: 123456 || Лекция 6 >
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?