Да, вы были правы, я только что закончил реализовывать это ... крутой человек, это работает как шарм :) относительно легко и быстро, просто были некоторые проблемы с настройкой точного идентификатора цвета, но в итоге все хорошо. Спасибо!

я есть некоторые объекты на сцене, некоторые могут перекрывать другие. Когда я щелкаю мышью или перетаскиваю, чтобы получить прямоугольник выделения, я хочу выбрать / выбрать только те объекты, которые я вижу с этой точки зрения. В настоящее время приложение использует режим рендеринга GL_SELECT, но, как мы знаем, он также выбирает скрытые объекты. Кроме того, я прочитал, что это не рекомендуется в OpenGL 3.

В настоящее время мне нравятся два метода. Во-первых, это выбор объекта с использованием обратного буфера (Красная книга, глава 14): установка цвета каждого объекта в соответствии с его идентификатором объекта и считывание цвета пикселей из буфера заднего кадра. Второе - это окклюзионные запросы (супербиблия, 4-е издание, глава 13).

Другие подходы, которые я исключил, - это просмотр значений min / max z в буфере выбора и выполнение пользовательского обнаружения луча / объекта вне GL.

У меня есть несколько вопросов: 1) Если GL_SELECT устарел в недавнем OpenGL, какие альтернативы должны использовать разработчики? 2) Я только когда-либо читал об окклюзионных запросах, используемых для ускорения рендеринга. Могут ли они быть использованы для выбора / выбора, и есть ли недостатки? 3) Существующее приложение имеет несколько вызовов glColorXXX. Если я пошел по маршруту обратного буфера и использовал glColorMask (FALSE, FALSE, FALSE, FALSE), это эффективно превратит вызовы glColourXXX в вызовы, которые не имеют никакого эффекта, что позволит мне контролировать цвет в одном месте при рендеринге в режиме выбора. ? 4) Какой маршрут лучший / канонический?

Ответы на вопрос(1)

Ваш ответ на вопрос