LWJGL で機能するいくつかの簡単なチュートリアル レベルのシェーダーを取得しようとしています。シェーダー自体ですべての色を指定すると、ブロック内で単純に色を付けることができる作業セットアップがありますが、現在、浮動小数点値をシェーダーに渡して単純なグレー スケールを指定しようとしています。
Frag シェーダは次のようになります。
varying vec4 vertColor;
uniform float light;
void main()
{
gl_FragColor = vec4(light, light, light, 1);
}
そして、ブロックをレンダリングする直前のコード:
if(useShader)
{
int loc = ARBShaderObjects.glGetUniformLocationARB(program, "light");
System.out.println("LOC: " + loc);
ARBShaderObjects.glUniform1fARB(loc, 1.0f);
ARBShaderObjects.glUseProgramObjectARB(program);
}
Frag シェーダーは元々指定されていましたが、これは機能し、を任意の float 値にgl_FragColor = vertColor
置き換えることができ、機能します。しかし、私が持っているように、何を渡しても、レンダリングすると正方形は常に黒になります。これは、デフォルトが に設定されているためだと思います。これは、ユニフォーム変数が設定されていないように聞こえます。light
vec4
ARBShaderObjects.glUniform1fARB
uniform float light
0.0f
関係があるとすれば、出力時に LOC が 0 であることは確かです。
私が欠けているものを知りたいです。