试图让一些简单的教程级着色器适用于 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 着色器最初指定gl_FragColor = vertColor
,它可以工作,我可以用任何浮点值替换light
它vec4
,它可以工作。但是正如我所拥有的,无论我传递什么ARBShaderObjects.glUniform1fARB
,当我渲染它时,正方形总是黑色的;我假设这是由于uniform float light
默认为0.0f
,这听起来像我的统一变量没有被设置。
如果完全相关,我确实看到 LOC 在打印出来时为 0。
想知道我错过了什么。