Определить видимые вершины в OpenGL - PullRequest
5 голосов
/ 02 ноября 2010

Какой самый эффективный способ определить вершины, видимые с определенной точки зрения?

У меня есть сцена, состоящая из нескольких 3D-моделей. Я хочу прикрепить идентификатор к каждой вершине (ModelID, VertexID), затем сгенерировать 2D-изображения с различных точек обзора и для каждого изображения сгенерировать список идентификаторов видимых вершин (по сути, это для приложения обработки изображений).

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

Заранее спасибо

1 Ответ

3 голосов
/ 02 ноября 2010
  1. Отключить все освещение / текстурирование
  2. Визуализация вашей геометрии (GL_TRIANGLES) для заполнения Z-буфера
  3. Снова визуализируйте вашу геометрию (GL_POINTS), выбрав другой цвет RGB для каждой вершины, который сопоставляется с вашей моделью / идентификаторами вершин
  4. Считайте обратно кадровый буфер и отсканируйте цвета, которые вы использовали ранее, сопоставив их с идентификаторами вашей модели / вершины.

Не очень быстро, но должно работать.

...