【发布时间】:2015-05-26 17:50:56
【问题描述】:
在我编写的程序中,我必须生成多个光源并传递给着色器。由于这个数字是在着色器之外定义的,我想通过uniform int 传递它并使用它来声明数组大小。
uniform int numLights;
uniform vec4 ambientColor;
uniform vec4 specularColor;
uniform vec3 diffuseColor[numLights];
uniform vec3 vLightPosition[numLights];
但是,我现在遇到了很多错误:
我不能这样做吗?问题是我正在考虑改变预定义灯光数量的可能性,例如忘记更新着色器。我的尝试是防止这种情况发生。
【问题讨论】:
-
真的不知道如何通过你展示的这个问题来做到这一点,@Axalo。 :S
-
uniform vec3 diffuseColor[numLights];numLights 必须是常量而不是统一的。 -
将错误发布为文本,而不是屏幕截图。
-
我做不到,@genpfault。 VS 不允许我复制文本。
标签: c++ arrays opengl glsl uniform