OpenGL границы полос - PullRequest
       37

OpenGL границы полос

1 голос
/ 21 октября 2009

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

спасибо,

Jeff

Ответы [ 2 ]

4 голосов
/ 21 октября 2009

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

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

1 голос
/ 22 октября 2009

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

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

...