#glsl
#glsl
Вопрос:
Мы изучаем выбор цветовой кодировки в GLSL для назначения. Мы также используем вершинный шейдер, который изменяет цвета объектов, которые мы хотели бы выбрать.
Учитывая логическое значение, указывающее, находимся мы в режиме выбора или нет (назовем это selectionMode
), как я могу убедиться, что шейдер не влияет на цвет, пока мы пытаемся выбрать объект?
Я думал о переносе логического значения в наш файл VertexShader.glsl и изменении операций, которые мы применяем к каждому фрагменту, на основе значения логического значения. Правильно ли это? Есть ли более простой способ?
Редактировать
Извините, если это было не так понятно. Я постараюсь объяснить себя лучше. Проблема сводится к следующему:
- В
main.cpp
мы определяем, что когда пользователь щелкает правой кнопкой мыши по экрану, мы проверяем цвет пикселя под курсором мыши и соответственно выбираем объект: если это 255 0 0, мы выбираем куб, если это 0 255 0, мы выбираем сферу и т.д. - В vertexshader.glsl мы применяем формулу, чтобы цвет объекта менялся в зависимости от его положения. Итак, когда мы визуализируем сцену, куб не всегда равен 255 0 0, сфера не всегда равна 0 255 0 и т.д.
Как я могу решить это противоречие?
Комментарии:
1. Как шейдер повлияет на цвет?
2. Вопрос не совсем ясен, поэтому я не уверен, что вам интересно, но вы можете захотеть взглянуть на подпрограммы GLSL, чтобы изменить поведение вашего шейдера ( opengl.org/wiki/Shader_Subroutine )
3. Я попытался лучше объяснить это в своем редактировании.
4. Я думаю, вам следует добавить некоторый код, который прояснил бы ситуацию ^^