Opengl es 什么';GLSL中的静态流量控制是什么?

Opengl es 什么';GLSL中的静态流量控制是什么?,opengl-es,glsl,flow-control,Opengl Es,Glsl,Flow Control,说有静态流量控制。(7.9流量控制) 什么是静态流量控制?它是否意味着编译器预处理器,如#if…#endif?他们说 Static flow control can be used to combine many shaders into one big shader. 这意味着什么?我可以从一个源实例化多个着色器变体吗?如7.9中前面的文本所示: 当条件执行取决于统一变量的值时, 这称为静态流量控制 因此,您将拥有一个着色器,该着色器根据一致性做出分支决策。这将是静态流量控制 他们试图告诉您

说有静态流量控制。(7.9流量控制)

什么是静态流量控制?它是否意味着编译器预处理器,如
#if…#endif
?他们说

Static flow control can be used to combine many shaders into one big shader.

这意味着什么?我可以从一个源实例化多个着色器变体吗?

如7.9中前面的文本所示:

当条件执行取决于统一变量的值时, 这称为静态流量控制

因此,您将拥有一个着色器,该着色器根据一致性做出分支决策。这将是静态流量控制


他们试图告诉您的是,设置统一可以动态地重新编程着色器-编译后的代码将使用新的统一值进行修补,而不是在每次着色器运行时查找这些值。因此,在着色器内访问制服的成本与使用常量的成本相同,在着色器外设置制服的成本可能比您想象的要高。

如7.9中前面的文本所示:

当条件执行取决于统一变量的值时, 这称为静态流量控制

因此,您将拥有一个着色器,该着色器根据一致性做出分支决策。这将是静态流量控制


他们试图告诉您的是,设置统一可以动态地重新编程着色器-编译后的代码将使用新的统一值进行修补,而不是在每次着色器运行时查找这些值。因此,在着色器内访问制服的成本与使用常量的成本相同,在着色器外设置制服的成本可能比您想象的要高。

请注意,这是特定于硬件的。这就是他们的特定硬件的工作原理。事实上,所有苹果设备都使用PowerVR GPU,因此如果你的目标是iOS,那么你可以毫无顾虑地优化PowerVR。它们在安卓领域相当普遍,但你也可以看到很多Nvidia Tegras和Broadcom部件,它们的工作方式可能非常不同。请注意,这是特定于硬件的。这就是他们的特定硬件的工作原理。事实上,所有苹果设备都使用PowerVR GPU,因此如果你的目标是iOS,那么你可以毫无顾虑地优化PowerVR。它们在安卓领域相当普遍,但你也可以看到很多Nvidia Tegras和Broadcom部件,它们的表现可能会非常不同。