GLSL 变量默认初始化为什么值?

Yad*_*kal 2 opengl opengl-es glsl

我知道在c和c++中,变量默认是未初始化的。另一方面,在 java 中它们默认初始化为 0 或 null。

GLSL中对应的默认初始化是什么?具体来说,当我们创建以下变量时,默认值是多少?

int val;

vec4 arr[20];

Nic*_*las 7

这取决于相关变量的存储限定符。 uniform变量始终初始化为 0/false。const-限定变量不能未初始化。所有其他未初始化的变量要么从外部资源(UBO 等)获取其内容,要么具有未定义的值。

  • @YadavDhakal:就个人而言,我认为依赖于不提供初始化程序时发生的行为是一种代码味道。如果它的价值很重要,那么“总是”最好是明确的。另外,我通过在 GLSL 规范中搜索“initial”发现了(大部分)这一点。 (3认同)