【发布时间】:2021-06-27 02:22:43
【问题描述】:
我在问自己一个关于 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];
};
这两种方式有什么区别?
我想这可能有助于减少着色器中使用的统一变量的数量,但我不确定。
【问题讨论】: