OpenGL: продолжайте рисовать внутри области на плоскости в трехмерном пространстве.

Шаг 1: Я использую glVertex() для рисования фигуры, скажем, прямоугольника, в трехмерном пространстве.

Шаг 2: Затем я рисую элементы внутри этого прямоугольника, например, с помощью glutStrokeCharacter() и снова с помощью glVertex().

Мне нужно оставить то, что нарисовано на шаге 2, внутри прямоугольника, нарисованного на шаге 1, обрезав все, что выходит за границы. Может кто-нибудь подсказать, как это сделать?


person Tom Bennett    schedule 02.05.2017    source источник


Ответы (1)


  1. Визуализация ограничивающей геометрии в буфер трафарета.
  2. Включить тест трафарета
  3. Рендеринг обычной геометрии в цветовой буфер; тест трафарета предотвратит запись фрагментов за пределами ограничивающей геометрии в цветовой буфер.
person genpfault    schedule 02.05.2017
comment
@TomBennett: отредактировано. - person genpfault; 02.05.2017
comment
Я не уверен, как установить буфер трафарета в моей ситуации. Я работаю с прямоугольным каркасом, нарисованным с помощью glBegin(GL_LINES); с несколькими вызовами glVertex(). Затем я хочу написать текст только внутри этого каркаса и обрезать все снаружи. Буферы трафарета, кажется, работают на уровне пикселей, и все примеры, которые я нахожу, имеют внутри какое-то заполнение. Но в моем случае, только с линиями, я не уверен, что буфер трафарета можно правильно установить. Если у вас есть подсказки, дайте мне знать. - person Tom Bennett; 02.05.2017
comment
@TomBennett: отключите запись цвета, включите запись трафарета, нарисуйте закрашенный прямоугольник с вершинами каркаса, чтобы заполнить буфер трафарета. Включите цветную запись, включите тест трафарета, нарисуйте каркасный прямоугольник и текст. - person genpfault; 02.05.2017