次のユニフォームが宣言されているシェーダーがあります。
均一なhighpfloatfr;
私のレンダリング方法では、それに応じて設定されます。
GLfloat num = 1.0f;
glUniform1f(glGetUniformLocation(self.Program, "fr"), num);
しかし、それはまったく設定されません。これらはかなり基本的なように見えるので、なぜ機能しないのかわかりません。正しい構文を使用しましたか?
シェーダー コードでこの fr 値を使用していない可能性がありますか? 次に、コンパイラはそれを非アクティブなユニフォームにし、コンパイルされたプログラムに実際には含めません.glGetUniformLocationは-1などのインデックスを返します. シェーダーと、glGetUniformLocation によって返される値を確認してください。
乾杯、 クシシュトフ・ザブロツキ
問題が見つかりました。
使用プログラムを呼び出す前に、ユニフォームを設定していました。この答えを見つけた人は、そのプログラムのユニフォームを設定する前に必ず use program を呼び出してください。