GLSL统一评价

GLSL Uniform evaluation

如果在顶点着色器中有:

#version 450 core
uniform bool v1;

void main()
{
    if(v1 == true)
    {
        //do something
    }
}

由于 Uniform 变量在整个着色器中都是常量 运行,因此每帧 if 将计算多少次?一?还是每个顶点一个(因为我们在 vs 中)?

要么每个顶点计算一次,要么系统将在每次更改制服时重新编译着色器(或者可能只有两种形式的着色器)。你应该更喜欢前者而不是后者。