0

次のユニフォームが宣言されているシェーダーがあります。

均一なhighpfloatfr;

私のレンダリング方法では、それに応じて設定されます。

GLfloat num = 1.0f;
glUniform1f(glGetUniformLocation(self.Program, "fr"), num);

しかし、それはまったく設定されません。これらはかなり基本的なように見えるので、なぜ機能しないのかわかりません。正しい構文を使用しましたか?

4

2 に答える 2

1

シェーダー コードでこの fr 値を使用していない可能性がありますか? 次に、コンパイラはそれを非アクティブなユニフォームにし、コンパイルされたプログラムに実際には含めません.glGetUniformLocationは-1などのインデックスを返します. シェーダーと、glGetUniformLocation によって返される値を確認してください。

乾杯、 クシシュトフ・ザブロツキ

于 2011-06-14T06:21:19.737 に答える
0

問題が見つかりました。

使用プログラムを呼び出す前に、ユニフォームを設定していました。この答えを見つけた人は、そのプログラムのユニフォームを設定する前に必ず use program を呼び出してください。

于 2011-06-16T09:20:28.437 に答える