Я пытаюсь найти лучший способ выбрать информацию, отображаемую с помощью шейдеров.
Буфер оконного менеджера (окно) используется для вывода рендеринга. На пользовательском событии я должен выбрать геометрию визуализации. Использовать gluPick легко, но я пытаюсь выбирать, используя только шейдеры.
Гибкость шейдеров не помогает мне найти правильное решение. Я нашел следующие решения:
- Рендеринг с использованием системного буфера (в действительности, с использованием цветов). Используйте glScissor для ограничения рендеринга в определенном регионе и используйте glReadPixels для выборки цветов, сопоставленных с геометрическими идентификаторами
- Рендеринг с использованием отдельного объекта кадрового буфера. Форматы Renderbuffer должны быть определены. Может быть, я могу использовать простые целые числа для ввода имен?
- Рендеринг с использованием объекта кадрового буфера, как для рендеринга, так и для выбора. Дополнительно объект renderbuffer, содержащий отображаемые имена.
Похоже, что второе решение является лучшим, поскольку не изменяет оконные буферы и можно определить собственный способ задания имен геометрии.
Есть предложения?
P.S:
Так как в фрагментном шейдере я объявляю массив vec4 для определения данных фрагмента, как я могу настроить кадровый буфер, содержащий буфер рендеринга, имеющий только компонент R, хранящийся во внутреннем целочисленном формате размера?
Можно ли связать выходную переменную фрагментного шейдера с конкретным прикрепленным буфером рендеринга?