我正在为我正在构建的 OpenGL/Java 引擎创建着色器。我已经搜索了一段时间,但我找不到拥有可变大小数组的方法。我知道我可以创建一个静态大小的,例如:
uniform vec3 variable[4];
Run Code Online (Sandbox Code Playgroud)
但是,如果可能的话,我将如何根据从 CPU 加载到着色器的内容来创建大小为 X 的数组。
提前致谢!
你不能。
要么像 CConard96 说的那样做,要么如果你不能使用 SSBO,那么只需声明一个硬编码的最大值并设置一个你需要的较低的值。
例如像 Nicol Bolas在这里说的:
#define MAX_NUM_TOTAL_LIGHTS 100
struct Light {
vec3 position;
float padding;
}
layout (std140) uniform Lights {
Light light[MAX_NUM_TOTAL_LIGHTS];
int numLights;
}
Run Code Online (Sandbox Code Playgroud)