OpenGL четырехугольные перекрытия - PullRequest
0 голосов
/ 28 февраля 2012

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

Возможно ли отключить это?Чтобы графический процессор убрал (один из) этих перекрывающихся четырехугольников?

Дело в рекламных щитах, которые светят сквозь статические стены.В идеальном случае я бы не хотел снимать рекламный щит, когда он перекрывается со стеной, не тратя на него много ресурсов процессора (у меня около 10.000 рекламных щитов и стен).

В настоящее время мои рекламные щитыреализованы путем расчета угла между объектом и камерой.

1 Ответ

3 голосов
/ 28 февраля 2012

В настоящее время мои рекламные щиты реализованы путем вычисления угла между объектом и камерой.

Совершенно неверный подход.Обычная перспективная проекция OpenGL - плоскопараллельная.Таким образом, это означает, что вы обычно хотите, чтобы ваш рекламный щит был копланарным относительно вашей ближней / дальней плоскости отсечения.

Это проще всего сделать, взяв инверсию верхней левой 3 × 3 части преобразования мира в глаза.матрица, и используйте X любых Y столбцов этого в качестве базовых векторов для ваших квадратов билбордов.

Как это происходит, обратные матрицы вращения - это транспонирование.Поэтому просто возьмите векторы первой и второй строк матрицы преобразования камеры (только первые 3 элемента каждый) и используйте их в качестве основы для своих рекламных щитов.Не связывайтесь с тригонометрией или углами, тогда вы лаете не на то дерево.

Об перекрытии обычно заботятся глубинным тестированием.Для полупрозрачной геометрии отключите глубину записи и предварительно сортируйте свою геометрию далеко-близко.

...