多个着色器实例

时间:2013-04-16 10:18:34

标签: opengl opengl-es-2.0 glsl

我最近读到你可以

  

“有多个OpenGL着色器实例”

但没有提供其他详细信息。

我想澄清一下这究竟意味着什么。

首先,我知道你可以运行多个glProgram,并且可以在它们之间切换。这是指所有这些吗?我假设每帧在几个创建的着色器程序之间切换基本上意味着我“同时”使用多个程序。

或者它是否以某种方式引用了相同的着色器程序的多个“实例”?那对我来说毫无意义。

在这里可以享受一些基本的澄清!

1 个答案:

答案 0 :(得分:6)

创建程序对象时,您将几个着色器链接在一起。通常至少有一个顶点和一个片段着色器。现在说你要渲染,说一些物体周围有些发光。该发光将由不同的片段着色器创建,但顶点着色器将与常规外观相同。现在为了节省资源,您可以在多个程序中使用相同的顶点着色器,但链接的是不同的片段着色器。当然,您也可以使用相同的片段着色器和不同的顶点着色器。

简而言之,您可以将单个着色器链接到任意数量的程序。只要链接的着色器阶段彼此兼容,这就有助于模块化。