2017-02-09 16 views
0

У нас есть массив вершин, массив вершинных индексов и прямоугольник. Каждые три индекса образуют треугольник, который нужно нарисовать. Прямоугольник представляет собой маску/границу, которая не может быть выведена за пределы. Хотя некоторые из треугольников могут быть вне/перекрывать прямоугольник.Алгоритм маскирования прямоугольника на вершинах (для рендеринга OpenGL)

Кто-нибудь знает (быстрый) алгоритм (или реализацию алгоритма C/C++), который может преобразовывать/воссоздавать массив треугольников и индексов в соответствии с прямоугольником маскирования?

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

+0

Разве это не будет вырезать отверстия в объектах, которые выходят за рамки отсечения? –

+0

Зачем это вырезать дыры? Вы можете представить себе это как лист бумаги и вырезать обрезной прямоугольник ножницами (функция OpenGL также называется glScissors). – keyboard

+0

Вы знаете [алгоритм Сазерленда-Ходжмана] (https://en.wikipedia.org/wiki/Sutherland%E2%80%93Hodgman_algorithm)? – Ripi2

ответ