Я смутно припоминаю, что видел что-то в OpenGL (не ES, который все еще был в версии 1.0 на iPhone, когда я наткнулся на это, поэтому я никогда им не пользовался), что позволяло мне указать, какие ребра моих полигонов считать контурами, а какие нет. составляли внутреннюю часть лиц. Таким образом, это не то же самое, что контур всей модели (что я знаю, как сделать), а скорее контур плоской грани со всеми ее треугольниками, в основном смешанными в один полигон. Например, в кубе, состоящем из треугольников, каждая грань на самом деле состоит из двух треугольников. Я хочу отобразить контур квадрата, но не диагональ на лице. То же самое с шестигранником. Для этого нужно четыре треугольника, но только один контур для лица.
Теперь да, я знаю, что могу просто проверить все ребра, чтобы увидеть, имеют ли они общие копланарные грани, но я мог бы поклясться, что видел где-то, когда вы задавали данные трехмерной сетки, где вы могли бы сказать: «Эта линия очерчивает лицо, тогда как эта один находится внутри лица. Таким образом, при рендеринге вы можете установить флаг, который в основном говорит: «Дайте мне каркас, но только провода по краям полных граней, а не вокруг треугольников, из которых они состоят».
Кстати, моя цель — все платформы, поддерживающие OpenGL ES 2.0, но моя платформа разработки — iOS. Опять же, я почти уверен, что изначально это было в OpenGL и, возможно, обесценилось после появления шейдеров, но я даже не могу найти ссылку на эту функцию, чтобы проверить, так ли это.
Единственный способ, который я знаю сейчас, это иметь один набор вершин, но два отдельных набора индексов... один для рендеринга треугольников, а другой для рендеринга каркасов граней. Это настоящая боль, так как я заканчиваю тем, что вручную много кодирую, что опять же, я на 99% уверен, что вы можете определить при рендеринге линий.