什么是 OpenGL 着色器语言中的不变量变化

What is an invariant varying in OpenGL Shader Language

我正在阅读 OpenGL ES 2 着色语言规范 (PDF),当我阅读这段代码时:

      invariant varying mediump vec3 Color;

我觉得理解了不变性的概念,但是"invariant varying"的意思让我觉得很费解。

有人可以向我解释一下它的含义以及为什么有用吗?

invariant 并不代表 constinvariant 是关于如何编译.

导致生成该值的表达式的 属性

varying 是一个 属性,指定在 VS 完成执行后 值会发生什么。 varying 变量被传递给光栅器进行插值。

一个控制如何将数据输入变量。另一个控制该变量中的数据最终去向。它们是 正交的 ,而不是对立的。

invariant 是一个关键字,用于通知着色器优化器,优化器应牢记,同一输入的变量在 2 个不同时间的输出应该相同。基于许多因素,一些优化通常会在不同的时间给出不同的结果。这个关键字将确保优化器避免在这个特定变量中使用这些技术。