我在思考有关UBO和用统一块在GLSL中访问它们的问题。
根据官方文档,如果我想设计一个灯光数组,我可能会写:
layout(std140, binding = 0) uniform LightBlock
{
vec4 position;
vec4 direction;
vec4 color;
...
} lights[8];
现在我看到很多例子,统一块的写法是这样的:
struct LightStruct
{
vec4 position;
vec4 direction;
vec4 color;
...
};
layout(std140, binding = 0) uniform LightBlock
{
LightStruct lights[8];
};
这两种方式有什么不同?
我猜可能有助于减少着色器中使用的统一变量的数量,但我不确定。