GLSL — Деактивация вершинных шейдеров для выбора цвета

#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. Я думаю, вам следует добавить некоторый код, который прояснил бы ситуацию ^^