Нужна помощь в организации различий в типах для визуализации геометрии BSP - PullRequest
3 голосов
/ 26 апреля 2011

В настоящее время я пытаюсь преобразовать другой формат в формат Quake 3 BSP.Формат Quake включает в себя вершины, грани, знаки и текстуры.

Из информации, с которой я должен работать:

У меня есть вершины, которые представляют собой 3 структуры с плавающей точкой для x, y иz местоположение.

У меня есть многоугольники, которые я могу предположить, это лица.Все полигоны являются треугольными и являются ссылками на индексы и текстуры вершин.

У меня правильно отформатированы текстуры.

Мои основные вопросы:

  1. Являются ли грани в формате BSP эквивалентными многоугольникам?
  2. Чтоиндикаторы в формате BSP?Они указывают на вершины или на что-то большее?

Ответы [ 2 ]

1 голос
/ 26 апреля 2011

Формат файла Quake3 очень похож на тот, который использовался в Quake2, и есть отличная статья о файлах BSP Quake2 на flipcode:

http://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml

0 голосов
/ 16 декабря 2014

Формат BSP Quake3 представляет все грани в виде треугольников (иногда программисты называют их «супом треугольника»). Это более эффективно для аппаратного рендеринга, чем формат Quake2, где грани могут быть произвольно расположенными многогранниками (3+ вершины). Когда все грани являются треугольниками, вы можете нарисовать несколько граней одним вызовом, при условии, что эти грани используют один и тот же материал:

glDrawArrays(GL_TRIANGLES, first_face->index, num_faces);

Эта группировка геометрии дает массивное улучшение производительности по сравнению с Quake2, где, поскольку каждое лицо может иметь различное количество вершин, грани не могут быть объединены в одну операцию рисования: вместо этого вы должны вызвать glDrawArrays (или хуже , glVertex3f в цикле) для каждого многоугольника. Это ключевое отличие, поэтому среда Quake3 может содержать в 10 раз сложнее, чем Quake2.

В любом случае, имейте в виду, что индексы - это не просто индексы в вершине. Они также являются индексами в текстурных координатах для каналов diffuse и lightmap. Надеюсь, это поможет.

...