Создание сетки в OpenGL

Я делаю несколько тестов OpenGL (2.1), и, пытаясь создать простой куб, мне было интересно, как создавать сложные сетки. Для моего куба я просто вручную устанавливаю каждую вершину с помощью GL_TRIANGLES, Но я не знаю, как сделать то же самое внутри цикла, например. Из-за порядка вершин и потому что есть много повторяющихся вершин!

Мне действительно нужно сделать лицо, установив 3 вершины «один раз» (для обоих треугольников)? Это кажется таким медленным. Как оптимизировать?

введите описание изображения здесь

Каковы методы создания / загрузки сеток?

О, я был бы признателен за пример.

4

Решение

Книга Джейсона Грегори «Архитектура игрового движка» содержит ответ на ваш вопрос. Вот что это говорит:

Самый простой способ определить меш — это скопировать вектики в группы
три […] Эта структура данных известна как список треугольников. […] Вы, вероятно, заметили, что многие вершины были продублированы, часто многократно […]. По этой причине большинство движков используют более эффективную структуру данных, известную как индексированный список треугольников.

Идея индексированных списков треугольников состоит в том, чтобы хранить вершины в отдельном буфере вершин, а индексы — в отдельном буфере индексов.

В этой же главе также рекомендуется использовать треугольные полосы (GL_TRIANGLE_STRIP) и фанаты (GL_TRIANGLE_FAN)

Учебник по индексированию объектов буфера вершин можно найти Вот

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]