2014-02-14 3 views
0

Я довольно новичок в шейдерах в WEBGL, у меня есть объект (.Json) в моей webgl-сцене. Когда я нажимаю на объект с помощью мыши, я хочу, чтобы щелчок изменил свой цвет на синий. Я могу получить места щелчка на объекте в формате x, y, z (называемый mouseclicks), и я знаю, что мне нужно использовать шейдеры, это то, что у меня есть до сих пор в шейдерах.Изменение цвета точки на объекте

varying vec3 mouseclick; 
attribute mouse; 


//vertex shader 
void main() 
{ 
    vec4 mouse =(mouseclick,1.0); 

} 

    //fragmant shader 

void main() 
{ 

    colorout = vec3(0.0f,0.0f,1.0f); 

    gl_FragColor =vec4(0.0,0.0,1.0,1.0); 
    } 

ответ

1

Предоставленный шейдер не будет работать - использование изменений и униформы неверно. Кроме того, это довольно сложно сделать в самом шейдере. Вы можете следовать следующим шагам:

  • Используйте механизм, чтобы узнать объект, щелкнул (это сложно, вы должны быть знакомы с моделью в мировом пространстве, преобразования)

  • Для этого объекта, установите цвет для изменения по мере необходимости (в коде приложения). Послать это как атрибут для этого объекта

  • Shader может быть общим шейдер, который устанавливает цвет как варьирования, а осколочной шейдер может использовать это, чтобы интерполировать цвет

Смежные вопросы