Если у вас есть прямой доступ к объекту шейдера (который должен быть примитивным целым числом), вы можете сделать это:
в шейдере фрагмент , который, вероятно, будет заканчиваться на .frag или .fsh:
uniform vec3 myColor;
out vec4 fragColor;
void main(){
fragColor=vec4(myColor,1.0);
}
В Java-коде для каждого кадра ПОСЛЕ того, как вы позвонили glUseProgram(shaderID)
, вам нужно вызвать glUniform3f(glGetUniformLocation(shaderID,"myColor"),red,green,blue);
, где red
, green
и blue
- это числа с плавающей точкой в диапазоне [0,1]
. Если у вас нет доступа к целочисленному идентификатору шейдера, то это действительно зависит от того, какой игровой движок вы используете.