Попытка получить некоторые простые шейдеры уровня учебника, работающие на LWJGL. У меня есть рабочая настройка, которая может просто окрашиваться в блок, когда я укажу все цвета в самом шейдере, но теперь я пытаюсь передать значение float в шейдер, чтобы указать простую шкалу серого.Невозможно передать равномерные значения шейдеру в 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
с любым значением float, и он работает. Но, как и у меня, независимо от того, что я перехожу на ARBShaderObjects.glUniform1fARB
, квадрат всегда будет черным, когда я его отрисую; Я предполагаю, что это связано с тем, что uniform float light
по умолчанию имеет значение 0.0f
, что звучит так, как моя однородная переменная не установлена.
Если это действительно так, я вижу, что LOC будет 0 при его распечатке.
Хотелось бы узнать, чего у меня нет.
Не могу поверить, что я не пробовал это уже, но он сработал. Благодаря! – user2154199