в каждом кадре (как в кадрах в секунду), который я рендерил, я делаю его уменьшенную версию, используя только объекты, которые пользователь может выбрать (и любые объекты, препятствующие выделению).В этом буфере я отрисовываю каждый объект другим цветом.Когда у пользователя есть mouseX и mouseY, я смотрю в этот буфер, какой цвет соответствует этой позиции, и нахожу соответствующие объекты.Я не могу работать с FBO, поэтому я просто отображаю этот буфер в текстуру и масштабирую текстуру ортогонально на экране, и использую glReadPixels, чтобы прочитать «горячую область» вокруг курсора мыши. Я знаю, не самая эффективная, но производительнаяпока все в порядке.
Теперь у меня проблема в том, что у этого буфера с «цветными объектами» есть некоторые проблемы с точностью.Конечно, я отключаю все шейдеры освещения и рамки, но все равно получаю артефакты.Очевидно, мне действительно нужны чистые листы цвета без каких-либо отклонений.
Обратите внимание, что здесь я помещаю всю информацию о цвете в беззнаковый байт в GL_RED.(на данный момент у меня максимально 255 выбираемых объектов).
Это вызвано изменением масштаба текстуры?(Я мог бы заменить это, просматривая масштабированные координаты в небольшой текстуре.), Или мне нужно отключить какой-нибудь другой флаг, чтобы действительно получить цвета, которые я хочу.Можно ли надежно использовать эту технику?