我最近读到你可以
“有多个OpenGL着色器实例”
但没有提供其他详细信息。
我想澄清一下这究竟意味着什么。
首先,我知道你可以运行多个glProgram,并且可以在它们之间切换。这是指所有这些吗?我假设每帧在几个创建的着色器程序之间切换基本上意味着我“同时”使用多个程序。
或者它是否以某种方式引用了相同的着色器程序的多个“实例”?那对我来说毫无意义。
在这里可以享受一些基本的澄清!
答案 0 :(得分:6)
创建程序对象时,您将几个着色器链接在一起。通常至少有一个顶点和一个片段着色器。现在说你要渲染,说一些物体周围有些发光。该发光将由不同的片段着色器创建,但顶点着色器将与常规外观相同。现在为了节省资源,您可以在多个程序中使用相同的顶点着色器,但链接的是不同的片段着色器。当然,您也可以使用相同的片段着色器和不同的顶点着色器。
简而言之,您可以将单个着色器链接到任意数量的程序。只要链接的着色器阶段彼此兼容,这就有助于模块化。