在阅读OpenGL规范时,我始终注意到它提到您可以在单个程序中包含多个相同类型的着色器(即,使用glAttachShader附加多个GL_VERTEX_SHADER)。特别是在OpenGL 4.2中,§2.11.3,程序对象:“多个相同类型的着色器对象可能会附加到单个程序对象...”。在单个OpenGL程序中附加多个相同类型的着色器?
OpenGL流水线程序和子程序可能适用于这里,但这是在存在之前定义的(实际上它回到2.1规范,第2.15.2节),所以我正在寻找一个GL4之前的例子。当我做了一些简单的测试时,发现包含多个void main()
导致链接错误。有没有人知道实际例如哪里使用?
我不确定这是否可行,但我猜你可以使用具有常用功能(但没有主要功能)的着色器,因此可以将这些着色器附加到porgram中,并可以从主着色器访问这些功能。这样你只需要编译这些函数一次。 – 2012-02-06 22:34:12