Вопрос

У меня есть сеть полилиний, и я хотел бы отобразить все части линий, находящиеся внутри определенного прямоугольника XY.В настоящее время я визуализирую строки в OpenGL, используя GL_LINE_STRIP, и это работает хорошо.Однако, если граница поля XY пересекает одну из линий (между вершинами), есть ли хороший способ просто отобразить часть линии, которая находится внутри поля?

Спасибо,

Джефф

Это было полезно?

Решение

Если ваш блок представляет собой обычный двумерный прямоугольник с выровненными осями, вы можете использовать функцию glScissor.В двух словах, он определяет 2D-прямоугольник в экранных координатах, где происходит все рисование.

Если ваш случай более сложный (например.у вас может быть прямоугольник на плоскости внутри 3D-сцены или около того...) вы можете сначала нарисовать прямоугольник в буфере трафарета и включить тест трафарета для рендеринга линий.Такой подход дает вам неограниченную гибкость в отношении формы, ограничивающей рисование, но он может быть немного медленнее во время рендеринга и требует больше усилий для настройки.

Другие советы

Я думаю, что Нильс Пипенбринк дал вам два лучших варианта, но я для полноты картины выброшу еще один:плоскости отсечения (глклипплане()).

Тем не менее, я думаю глНожницы() это самое простое решение, если оно всегда будет выровнено по окну.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top