Я решил реализовать выборку, используя задний буфер.Вот моя попытка ответить на мои вопросы:
Если GL_SELECT устарел в недавнем OpenGL, какие альтернативы предполагается использовать разработчикам?
Я думаю, что лучше не использовать OpenGL, чтобы сделатьэто задача, но использовать структуры пространственного ускорения, как предложено в комментариях к исходному вопросу, как user camera85.
Я когда-либо читал только об окклюзионных запросах, используемых для ускорения рендеринга.Могут ли они быть использованы для выбора / выбора, и есть ли недостатки?
Я уверен, что они могли бы, но нужно было бы знать все объекты, которые они хотят запросить на окклюзию до начала розыгрыша.Используя задний буфер и выбор цвета, можно просто посмотреть, что находится под курсором или внутри прямоугольной области, и отфильтровать оттуда.
Существующее приложение имеет несколько вызовов glColorXXX.Если я пошел по маршруту обратного буфера и использовал glColorMask (FALSE, FALSE, FALSE, FALSE), это эффективно превратит вызовы glColorXXX в вызовы, которые не имеют никакого эффекта, что позволит мне контролировать цвет в одном месте при рендеринге в режиме выбора.?
Ответ - нет.Вызов glColorMask () со всеми параметрами GL_FALSE не означает, что вызовы glColor3ub () (например) не будут обрабатываться.Он просто указывает фильтр / маску для цветов непосредственно перед тем, как они записываются в буфер цвета.Первоначально предполагалось установить цвет для идентификатора объекта, а затем вызвать glColorMask (), чтобы игнорировать все последующие вызовы glColorXXX ().Эта стратегия обречена, так как цвет, представляющий идентификатор объекта, также будет замаскирован.
4) Какой маршрут является лучшим / каноническим? Я бы сказал, что выбор цвета заднего буфера равен как правило, лучше, так как не требует настройки запросов окклюзии до / во время розыгрыша.