OpenGL ES着色器语言规范 6.4 跳转

目录

6.4 跳转


6.4 跳转

以下为跳转关键字:

jump_statement:
    continue;
    break;
    return;
    return expression;
    discard; // 仅在片元着色器中使用

没有“goto”也没有其他非结构化的控制流程。

continue跳转仅用于循环,它会跳过它内部最内圈的剩余部分。对于whiledo-while循环,此跳转使循环进入到下一次condition-expression的计算。对于for循环,将直接跳转到计算expression,然后进入到下一次循环计算condition。

break跳转也只能在循环中使用。 它只是包含break的最内层循环的立即退出。不再执行condition-expressionloop-expression

discard关键字仅允许在片元着色器中使用。它可以在片元着色器中使用,以放弃对当前片段的操作。 此关键字会导致丢弃该片段,并且不会对任何缓冲区进行更新。它通常用于条件语句中,例如:

if (intensity < 0.0)
    discard;

片元着色器可以测试片段的alpha值并根据该测试丢弃片段。但是,应该注意的是,在片段着色器运行之后进行覆盖测试,并且覆盖测试可以更改alpha值。

return跳转会立即退出当前函数。如果它有expression,那么这个expression是函数的返回值。

函数main可以使用return。 这简单地导致main以与到达函数结束时相同的方式退出。它并不意味着在片段着色器中使用discard。在main中定义输出值之前使用return将具有与在定义输出之前到达main的结尾一样的行为(所以在main中不要轻易使用return,尤其是低端的芯片中)。

OpenGL ES着色器语言规范 6.4 跳转
Android,OpenGL ES,图形学