これを明示的に述べている場所はどこにも見つかりませんでしたが、できますか:
unsigned int someUniform = 0;
unsigned int anotherUniform = 0;
glUseProgram(1);
someUniform = glGetUniformLocation(1, "uniformLocation");
glUniform3f(someUniform, 1, 1, 1);
glUseProgram(2);
anotherUniform = glGetUniformLocation(2, "anotherUniform");
glUniform3f(anotherUniform, 1, 1, 1);
次のフレームでは、次のように呼び出します。
glUseProgram(1);
glUniform3f(someUniform, 1, 1, 1);
glUseProgram(2);
glUniform3f(anotherUniform, 1, 1, 1);
少しテストしたところ、一定のままでしたが、プログラムが 2 つしかなく、複雑なものは何もないと思います。
フレームごとに uniformLocation を取得する必要がありますか、それとも一度その場所を見つけて、それが常に同じであることを確認できますか?