Трафаретный буфер VS примитивная тесселяция - PullRequest
0 голосов
/ 06 марта 2011

Я изучаю открытые окна и планирую создать программу, которая будет иметь форму, которая может быть вырезана в меньшую форму путем динамического удаления части формы. Ограничение заключается в том, что я должен быть в состоянии определить, находится ли объект внутри или вне формы разреза.

Вариант, о котором я подумал: 1) использовать трафаретный буфер, состоящий только из черно-белой маски. Таким образом, я также могу использовать ту же карту для обнаружения столкновений. 2) другой вариант состоит в том, чтобы динамически изменить свое представление о примитиве, а затем создать его. Это звучит более сложно и в настоящее время является моим наименее любимым вариантом. Это также затруднит обнаружение столкновений.

PS Мне бы хотелось, чтобы часть фигуры, которая была удалена, выпала из анимации, я не уверен, как выбор любого из этих методов повлияет на простоту этого. Пожалуйста, выскажите свое мнение.

Что вы думаете об этом? Имейте в виду, что я новичок в opengl и могу ошибаться, не осознавая этого.

Спасибо, Джейсон

1 Ответ

2 голосов
/ 06 марта 2011

Обычно считается хорошей идеей выдавать только команды записи на видеокарту. По сути, это «вообще не использовать команды glGet *», потому что задержка этих команд может быть несколько высокой.

Сказанный вариант 1) замечательно, если вы просто хотите замаскировать вещи. Поскольку вы пытаетесь заставить отрезанную часть выпасть, это действительно не вариант, так как вы должны извлечь / восстановить вершины этой части.

Я не совсем понимаю часть "тесселяции" вашего второго варианта, но если ваш примитив - это многоугольник, а вырезы - прямые линии, то легко вычислить 2 полигона после разреза. На самом деле подпрограмма отсечения окна просмотра в OpenGL делает это постоянно, и в ней много литературы, например http://en.wikipedia.org/wiki/Sutherland-Hodgman

В долгосрочной перспективе часто лучше сначала создать (невизуальную) модель того, что происходит в приложении, прежде чем визуализировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...