Разное

Примитивы opengl: Рисование примитивов в OpenGL — Разные уроки по Программированию

Математики и кибернетики


жүктеу/скачать 0.67 Mb.

бет1/20
Дата29.05.2016
өлшемі0.67 Mb.
#100720
түріКонтрольные вопросы

  1   2   3   4   5   6   7   8   9   …   20

    Бұл бет үшін навигация:
  • Введение
  • Глава 1.Основы OpenGL

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИМЕНИ М.В. ЛОМОНОСОВА
ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ
МАТЕМАТИКИ И КИБЕРНЕТИКИ

Баяковский Ю.М., Игнатенко А.В., Фролов А.И.

Графическая библиотека OpenGL


методическое пособие

Москва
2002

УДК 681.3

Предисловие

Содержание

Введение 7

Глава 1. Основы OpenGL 9

1.1. Основные возможности 9

1.2. Интерфейс OpenGL 9

1.3. Архитектура OpenGL 11

1.4. Синтаксис команд 13

1.5. Пример приложения 14

Контрольные вопросы: 18

Глава 2. Рисование геометрических объектов 19

2.1. Процесс обновления изображения 19

2.2. Вершины и примитивы 20

2.3. Операторные скобки glBegin / glEnd 22

2.4. Дисплейные списки 26

2.5. Массивы вершин 28

Контрольные вопросы 29

Глава 3. Преобразования объектов 31

3.1. Работа с матрицами 31

3.2. Модельно-Видовые преобразования 33

3.3. Проекции 35

3.4. Область вывода 37

Контрольные вопросы 38

Глава 4. Материалы и освещение 39

4.1. Модель освещения 39

4.2. Спецификация материалов 40

4.3. Описание источников света 42

4.4. Создание эффекта тумана 45

Контрольные вопросы 46

Глава 5. Текстурирование 47

5.1. Подготовка текстуры 47

5. 2. Наложение текстуры на объекты 50

5.3. Текстурные координаты 52

Контрольные вопросы 55

Глава 6. Операции с пикселями 56

6.1. Смешивание изображений. Прозрачность 57

6.2. Буфер-накопитель 58

6.3. Буфер маски 60

6.4. Управление растеризацией 62

Глава 7. Приемы работы с OpenGL 63

7.1. Устранение ступенчатости 63

7.2. Построение теней 64

7.3. Зеркальные отражения 69

Глава 8. Оптимизация программ 73

8.1. Организация приложения 73

8.2. Оптимизация вызовов OpenGL 77

Приложение A. Структура GLUT-приложения 86

Приложение A. Примитивы библиотек GLU и GLUT 90

Приложение A. Настройка приложений OpenGL 93

A.1. Создание приложения в среде Borland C++ 5.02 93

A.2. Создание приложения в среде MS Visual C++ 6.0 94

Приложение B. Демонстрационные программы 95

B.1. Пример 1: Простое GLUT-приложение 95

B.2. Пример 2: Модель освещения OpenGL 97

B. 3. Пример 3: Текстурирование 101

Приложение C. Примеры практических заданий 108

C.1. Cornell Box 108

C.2. Виртуальные часы 109

C.3. Интерактивный ландшафт 111

Литература 117

Предметный указатель 118



OpenGL является одним из самых популярных прикладных программных интерфейсов (API – Application Programming Interface) для разработки приложений в области двумерной и трехмерной графики.

Стандарт OpenGL (Open Graphics Library – открытая графическая библиотека) был разработан и утвержден в 1992 году ведущими фирмами в области разработки программного обеспечения как эффективный аппаратно-независимый интерфейс, пригодный для реализации на различных платформах. Основой стандарта стала библиотека IRIS GL, разработанная фирмой Silicon Graphics Inc.

Библиотека насчитывает около 120 различных команд, которые программист использует для задания объектов и операций, необходимых для написания интерактивных графических приложений.

На сегодняшний день графическая система OpenGL поддерживается большинством производителей аппаратных и программных платформ. Эта система доступна тем, кто работает в среде Windows, пользователям компьютеров Apple. Свободно распространяемые коды системы Mesa (пакет API на базе OpenGL) можно компилировать в большинстве операционных систем, в том числе в Linux.

Характерными особенностями OpenGL, которые обеспечили распространение и развитие этого графического стандарта, являются:


  • Стабильность.
    Дополнения и изменения в стандарте реализуются таким образом, чтобы сохранить совместимость с разработанным ранее программным обеспечением.

  • Надежность и переносимость. Приложения, использующие OpenGL, гарантируют одинаковый визуальный результат вне зависимости от типа используемой операционной системы и организации отображения информации. Кроме того, эти приложения могут выполняться как на персональных компьютерах, так и на рабочих станциях и суперкомпьютерах.

  • Легкость применения. Стандарт OpenGL имеет продуманную структуру и интуитивно понятный интерфейс, что позволяет с меньшими затратами создавать эффективные приложения, содержащие меньше строк кода, чем с использованием других графических библиотек. Необходимые функции для обеспечения совместимости с различным оборудованием реализованы на уровне библиотеки и значительно упрощают разработку приложений.

Наличие хорошего базового пакета для работы с трехмерными приложениями упрощает понимание студентами ключевых тем курса компьютерной графики – моделирование трехмерных объектов, закрашивание, текстурирование, анимацию и т.д. Широкие функциональные возможности OpenGL служат хорошим фундаментом для изложения теоретических и практических аспектов предмета.

Глава 1.Основы OpenGL

Описывать возможности OpenGL мы будем через функции его библиотеки. Все функции можно разделить на пять категорий:



  • Функции описания примитивов определяют объекты нижнего уровня иерархии (примитивы), которые способна отображать графическая подсистема. В OpenGL в качестве примитивов выступают точки, линии, многоугольники и т.д.

  • Функции описания источников света служат для описания положения и параметров источников света, расположенных в трехмерной сцене.

  • Функции задания атрибутов. С помощью задания атрибутов программист определяет, как будут выглядеть на экране отображаемые объекты. Другими словами, если с помощью примитивов определяется, что появится на экране, то атрибуты определяют способ вывода на экран. В качестве атрибутов OpenGL позволяет задавать цвет, характеристики материала, текстуры, параметры освещения.

  • Функции визуализации позволяет задать положение наблюдателя в виртуальном пространстве, параметры объектива камеры. Зная эти параметры, система сможет не только правильно построить изображение, но и отсечь объекты, оказавшиеся вне поля зрения.

  • Набор функций геометрических преобразований позволяют программисту выполнять различные преобразования объектов – поворот, перенос, масштабирование.


При этом OpenGL может выполнять дополнительные операции, такие как использование сплайнов для построения линий и поверхностей, удаление невидимых фрагментов изображений, работа с изображениями на уровне пикселей и т.д.

Каталог: vmkbotva-r15 -> 3%20%D0%BA%D1%83%D1%80%D1%81))) -> 5%20%D0%A1%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80
5%20%D0%A1%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80 -> Сравнение языков программирования C, C++, Pascal, Ada, Modula-2, Oberon-2 и Java A. Зачем это делается
5%20%D0%A1%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D1%80 -> Любой уважающий себя вычислительный центр придумывал свой яп
vmkbotva-r15 -> Катречко С. Л. Античная проблематика «вещи» и ее дальнейшее развитие в эпоху средневековья
vmkbotva-r15 -> «Бог древнее всего, ибо он не сотворен» «Всё полно богов»
vmkbotva-r15 -> Исследование и построение эскиза. Найдем производные функции : и функции
vmkbotva-r15 -> Билет 26. Субъективный идеализм (Джордж Беркли и Давид Юм).

Джордж Беркли(1685 1753)
vmkbotva-r15 -> Конспект лекций по «Аналитической верификации программ», прочитанных в рамках курса по «Формальным методам спецификации программ» на факультете вмик мгу им. Ломоносова


жүктеу/скачать 0.67 Mb.


Достарыңызбен бөлісу:

  1   2   3   4   5   6   7   8   9   …   20


©dereksiz.org 2022
әкімшілігінің қараңыз

    Басты бет

Основы OpenGl

Все функции библиотеки OpenGL можно разделить на пять категорий:

  • Функции описания примитивов определяют объекты нижнего уровня иерархии (примитивы), которые способна отображать графическая подсистема. В OpenGL в качестве примитивов выступают точки, линии, многоугольники и т.д.;

  • Функции описания источников света служат для описания положения и параметров источников света, расположенных в трехмерной сцене;

  • Функции задания атрибутов. В качестве атрибутов OpenGL позволяет задавать цвет, характеристики материала, текстуры, параметры освещения;

  • Функции визуализации позволяют задать положение наблюдателя в виртуальном пространстве, параметры объектива камеры. Это позволяет не только правильно построить изображение, но и отсечь объекты, оказавшиеся вне поля зрения;

  • Набор функций геометрических преобразований позволяет выполнять различные преобразования объектов – поворот, перенос, масштабирование.

При этом OpenGL может выполнять дополнительные операции, такие как использование сплайнов для построения линий и поверхностей, удаление невидимых фрагментов изображений, работа с изображениями на уровне пикселей и т.д.

Интерфейс OpenGL

OpenGL состоит из набора библиотек. Все базовые функции хранятся в основной библиотеке (GL). Помимо основной, OpenGL включает в себя несколько дополнительных библиотек, которые могут подключаться как в виде отдельных модулей, так и в виде библиотек динамической компоновки (Dynamic Link Library — DLL).

Рис. 3.1 Организация библиотеки OpenGL

Библиотека GLU

GLU (OpenGL Utilities Library) содержит несколько подпрограмм, которые используют OpenGL для выполнения таких задач, как установка матриц для определенного ориентирования и проецирования просмотра, выполнение тесселяции многоугольников (разбиение произвольного многоугольника на выпуклые многоугольники) и визуализация поверхности. Библиотека GLU предоставляет множество возможностей моделирования: поверхности второго порядка, NURBS-кривые и NURBS-поверхности (Non-Uniform Rational B Spline — неравномерный рациональный B-сплайн). Библиотека GLU представляет собой стандартную часть реализации OpenGL. Существуют также наборы инструментов более высокого уровня, такие как FSG (Farengheit Scene Graph). Подпрограммы GLU используют префикс glu.

Библиотека GLUT

Для вывода изображения OpenGL-программы должны использовать механизмы системы управления окнами. Для этого можно вызывать функции API оконной системы, например, WinAPI, однако в этом случае приложение будет компилироваться только под одну выбранную оконную систему. Чтобы упростить задачу разработчикам, была создана библиотека GLUT (Graphics Library Utility Toolkit), которая представляет собой независимый от оконной системы инструментарий, написанный Марком Килгардом (Mark Kilgard) для того чтобы скрыть сложность программного интерфейса API различных оконных систем, отвечающих за создание окон, в которые будет производиться вывод генерируемых изображений, обработка нажатий клавиш клавиатуры, перемещение мыши и пр. Подпрограммы GLUT используют префикс glut. Функционально аналогичная библиотека GLX, интегрирующая Х Window с OpenGL, менее популярна.

Библиотека GLAUX

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

Синтаксис команд OpenGL

В названии команд OpenGL используется префикс gl и заглавные буквы для отделения слов, составляющих название команды (например, glClearColor()). Подобным же образом OpenGL определяет константы, начинающиеся с GL_ со всеми заглавными буквами и символом подчеркивания для отделения слов (например, GL_COLOR_BUFFER_BIT).

Следует также обратить внимание на буквы и цифры в конце названия некоторых команд (например, 3f в glColor3f() и glVertex3f()). Цифра 3 в названии команды glColor3f() означает, что она получает три аргумента, существует и другая версия, получающая четыре аргумента (четвертый – коэффициент прозрачности, называемый альфа — каналом). Буква f означает, что аргументы имеют формат числа с плавающей точкой. Подобное соглашение об именовании команд позволяет программисту использовать более удобный для него формат аргументов.

Некоторые команды воспринимают до восьми различных типов данных. Буквы, используемые в качестве суффиксов для указания конкретного типа данных в реализации OpenGL для ISO — стандарта языка C приведены в таблице 3.1.

Таблица 3.1. Суффиксы команд и соответствующие им типы аргументов

Суффиксы

Тип данных

Аналогичный тип языка С

Тип, определенный в OpenGL

b

целое 8 бит

signed char

GLbyte

s

целое 16 бит

short

GLshort

i

целое 32 бита

int или long

GLint, GLsizei

f

число с плавающей точкой 32 бита

float

GLfloat, GLclampf

d

число с плавающей точкой 64 бита

double

GLdouble, GLclampd

ud

беззнаковое целое 8 бит

unsigned char

GLubyte, GLboolean

us

беззнаковое целое 16 бит

unsigned short

GLushort

ui

беззнаковое целое 32 бита

unsigned int или unsigned long

GLuint, GLenum, GLbitfield

Примитивы библиотек GLU и GLUT

Рассмотрим стандартные команды построения примитивов, которые реализованы в библиотеках GLU и GLUT.

Чтобы построить примитив из библиотеки GLU, надо сначала создать указатель на quadric-объект с помощью команды gluNewQuadric(), а затем вызвать одну из команд: gluSphere(), gluCylinder(), gluDisk(), gluPartialDisk(). Рассмотрим эти команды отдельно (табл. 3.2).

Таблица 3.2. Функции библиотеки GLU

Название функции

Назначение

void gluSphere(

GLUquadricObj *qobj,

GLdouble radius,

GLint slices,

GLint stacks)

Эта функция строит сферу с центром в начале координат и радиусом radius. При этом число разбиений сферы вокруг оси z задается параметром slices, а вдоль оси z – параметром stacks.

void gluCylinder(

GLUquadricObj *qobj,

GLdouble baseRadius,

GLdouble topRadius,

GLdouble height,

GLint slices,

GLint stacks)

Данная функция строит цилиндр без оснований (то есть кольцо), продольная ось параллельна оси z, заднее основание имеет радиус baseRadius, и расположено в плоскости z=0, переднее основание имеет радиус topRadius и расположено в плоскости z= height. Если задать один из радиусов равным нулю, то будет построен конус. Параметры slices и stacks имеют аналогичный смысл, что и в предыдущей команде.

void gluDisk(

GLUquadricObj *qobj,

GLdouble innerRadius,

GLdouble outerRadius,

GLint slices,

GLint loops)

Функция строит плоский диск (то есть круг) с центром в начале координат и радиусом outerRadius. При этом если значение innerRadius отлично от нуля, то в центре диска будет находиться отверстие радиусом innerRadius. Параметр slices задает число разбиений диска вокруг оси z, а параметр loops – число концентрических колец, перпендикулярных оси z.

void gluPartialDisk(

GLUquadricObj *qobj,

GLdouble innerRadius,

GLdouble outerRadius,

GLint slices,

GLint loops,

GLdouble startAngle,

GLdouble sweepAngle)

Отличие этой функции от предыдущей заключается в том, что она строит сектор круга, начальный и конечный углы которого отсчитываются против часовой стрелки от положительного направления оси y и задаются параметрами startAngle и sweepAngle. Углы измеряются в градусах.

Команды, проводящие построение примитивов из библиотеки GLUT, реализованы через стандартные примитивы OpenGL и GLU. Для построения нужного примитива достаточно произвести вызов соответствующей команды. Объект каждого типа может быть создан в двух режимах – в виде сплошной трехмерной фигуры или каркасного объекта (для каркасного объекта фрагмент «Solid» в названии функции заменяется на «Wire»).

Таблица 3.2. Функции библиотеки GLUT

Название функции

Назначение

void glutSolidSphere (

GLdouble radius,

GLint slices,

GLint stacks)

Функция glutSolidSphere() строит сферу, а glutWireSphere() – каркас сферы радиусом radius. При этом число разбиений сферы вокруг оси z задается параметром slices, а вдоль оси z – параметром stacks.

void glutSolidCube(

GLdouble size)

Построение куба или каркаса куба с центром в начале координат и длиной ребра size.

void glutSolidCone(

GLdouble base,

GLdouble height,

GLint slices,

GLint stacks)

Функция строит конус или его каркас высотой height и радиусом основания base, расположенный вдоль оси z. Основание находится в плоскости z=0.

void glutSolidTorus(

GLdouble innerRadius,

GLdouble outerRadius,

GLint nsides,

GLint rings)

Построение тора или его каркаса в плоскости z=0. Внутренний и внешний радиусы задаются параметрами innerRadius, outerRadius. Параметр nsides задает число сторон в кольцах, составляющих ортогональное сечение тора, а rings – число радиальных разбиений тора.

void glutSolidTetrahedron (void)

void glutWireTetrahedron (void)

Функции строят тетраэдр (правильную треугольную пирамиду) или его каркас, при этом радиус описанной сферы вокруг него равен 1.

void glutSolidOctahedron (void)

void glutWireOctahedron (void)

Построение октаэдра или его каркаса, радиус описанной вокруг него сферы равен 1.

void glutSolidDodecahedron (void)

void glutWireDodecahedron (void)

Функции строят додекаэдр или его каркас, радиус описанной вокруг него сферы равен квадратному корню из трех.

void glutSolidIcosahedron (void)

void glutWireIcosahedron (void)

Построение икосаэдра или его каркаса, радиус описанной вокруг него сферы равен 1.

Для корректного построения перечисленных примитивов необходимо удалять невидимые линии и поверхности, для чего надо включить соответствующий режим вызовом команды glEnable(GL_DEPTH_TEST).

Раздел 2.1. Примитивы OpenGL | OpenGL дистиллированная

2.1. Примитивы OpenGL

В OpenGL приложения отображают примитивы, указывая тип примитива и последовательность вершин со связанными данными. Тип примитива определяет, как OpenGL интерпретирует и отображает последовательность вершин.

2.1.1. Типы примитивов

OpenGL предоставляет десять различных типов примитивов для рисования точек, линий и многоугольников, как показано на рис. 2-1.

Рис. 2-1. Примитивные типы OpenGL.

OpenGL интерпретирует вершины и отображает каждый примитив, используя следующие правила:

  • GL_POINTS Используйте этот тип примитива для отображения математических точек. OpenGL отображает точку для каждой указанной вершины.

  • GL_LINES Используйте этот примитив для рисования несвязанных сегментов линии. OpenGL рисует сегмент линии для каждой группы из двух вершин. Если приложение указывает n вершин, OpenGL отображает n/2 сегмента линии. Если n нечетно, OpenGL игнорирует последнюю вершину.

  • GL_LINE_STRIP Используйте этот примитив для рисования последовательности соединенных сегментов линии. OpenGL визуализирует отрезок между первой и второй вершинами, между второй и третьей, между третьей и четвертой и так далее. Если приложение указывает n вершин, OpenGL отображает n1 сегментов линии.

  • GL_LINE_LOOP Используйте этот примитив, чтобы закрыть линейную полосу. OpenGL отображает этот примитив как GL_LINE_STRIP с добавлением замыкающего отрезка между последней и первой вершинами.

  • GL_TRIANGLES Используйте этот примитив для рисования отдельных треугольников. OpenGL отображает треугольник для каждой группы из трех вершин. Если ваше приложение указывает n вершин, OpenGL отображает n/3 треугольников. Если n не кратно 3, OpenGL игнорирует лишние вершины.

  • GL_TRIANGLE_STRIP Используйте этот примитив для рисования последовательности треугольников с общими ребрами. OpenGL визуализирует треугольник, используя первую, вторую и третью вершины, а затем другой, используя вторую, третью и четвертую вершины, и так далее. Если приложение указывает n вершин, OpenGL отображает n2 соединенных треугольников. Если n меньше 3, OpenGL ничего не отображает.

  • GL_TRIANGLE_FAN Используйте этот примитив для рисования веера треугольников, которые имеют общие ребра и вершины. Каждый треугольник имеет общую первую указанную вершину. Если приложение указывает последовательность вершин v, OpenGL отображает треугольник, используя v 0 , v 1 и v 2 ; другой треугольник с использованием v 0 , v 2 и v 3 ; другой треугольник с использованием v 0 , v 3 и v 4 ; и так далее. Если приложение указывает n вершин, OpenGL отображает n2 соединенных треугольников. Если n меньше 3, OpenGL ничего не отображает.

  • GL_QUADS Используйте этот примитив для рисования отдельных выпуклых четырехугольников. OpenGL отображает четырехугольник для каждой группы из четырех вершин. Если приложение указывает n вершин, OpenGL отображает n/4 четырехугольника. Если n не кратно 4, OpenGL игнорирует лишние вершины.

  • GL_QUAD_STRIP Используйте этот примитив для рисования последовательности четырехугольников с общими ребрами. Если приложение указывает последовательность вершин v, OpenGL визуализирует четырехугольник, используя v 0 , v 1 , v 3 и v 2 ; другой четырехугольник с использованием v 2 , v 3 , v 5 и v 4 ; и так далее. Если приложение указывает n вершин, OpenGL отображает (n-2)/2 четырехугольника. Если n меньше 4, OpenGL ничего не отображает.

  • GL_POLYGON Используйте GL_POLYGON для рисования одного заполненного выпуклого n-угольного примитива. OpenGL отображает n-сторонний многоугольник, где n — количество вершин, указанное приложением. Если n меньше 3, OpenGL ничего не отображает.

Для GL_QUADS, GL_QUAD_STRIP и GL_POLYGON все примитивы должны быть как плоскими, так и выпуклыми. В противном случае поведение OpenGL не определено. Библиотека GLU поддерживает тесселяцию полигонов, что позволяет приложениям визуализировать заполненные примитивы, которые являются невыпуклыми или самопересекающимися, или которые содержат отверстия. Для получения дополнительной информации см. набор функций «gluTess» в Справочном руководстве OpenGL ® .

2.1.2. Совместное использование вершин

Обратите внимание, что GL_LINE_STRIP, GL_LINE_LOOP, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN и GL_QUAD_STRIP имеют общие вершины среди составляющих их сегментов прямых, треугольников и четырехугольников. В общем, вы должны использовать эти примитивы, когда это возможно и практично, чтобы уменьшить избыточные вычисления для каждой вершины.

Вы можете визуализировать примитив GL_QUAD_STRIP с двумя четырехугольниками, используя, например, GL_QUADS. При отображении в виде GL_QUAD_STRIP вашему приложению потребуется отправить только шесть уникальных вершин. Однако версия этого примитива GL_QUADS потребовала бы восьми вершин, две из которых избыточны. Передача одинаковых вершин в OpenGL увеличивает количество операций над каждой вершиной и может создать узкое место производительности в конвейере рендеринга.

Учебное пособие по GLSL — примитивная сборка » Lighthouse3d.com

Этап сборки примитивов получает в качестве входных данных обработанные вершины от вершинного шейдера и информацию о соединении вершин от приложения, как указано в семействе команд OpenGL glDraw* .

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

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

Патчи — это примитивные типы, принимаемые шейдером управления тесселяцией, доступные в OpenGL 4+. Количество вершин патча не фиксировано, как в случае с примитивами, и может варьироваться от 1 до константы, зависящей от реализации, 9.0117 GL_MAX_PATCH_VERTICES , вершин на патч.

Графически, предполагая, например, что тип примитива — GL_TRIANGLES, это можно изобразить следующим образом:

В следующей таблице показаны возможные настройки входной информации о соединении и полученные выходные данные, а также шейдеры, которые их используют.

Команда glDraw выходной примитив используется в шейдерах
GL_POINTS точек геометрия; фрагмент
GL_LINES строки геометрия; фрагмент
GL_LINE_STRIP строки геометрия; фрагмент
GL_LINE_LOOP строки геометрия; фрагмент
GL_LINES_ADJACENCY линии_смежности геометрия
GL_LINE_STRIP_ADJACENCY линии_смежности геометрия
ГЛ_ТРЕУГОЛЬНИКИ треугольники геометрия; фрагмент
GL_TRIANGLE_STRIP треугольники геометрия; фрагмент
GL_TRIANGLE_FAN треугольники геометрия; фрагмент
GL_TRIANGLES_ADJACENCY треугольники_смежности геометрия
GL_TRIANGLE_STRIP_ADJACENCY треугольники_смежности геометрия
GL_PATCHES патчи управление тесселяцией

 

Ниже приведены примеры того, что можно получить с помощью точек, линий и треугольников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *