我read可以将多个着色器附加到OpenGL中程序的同一个阶段,以创建辅助函数的“库”。我试过这个,它在我的机器上运行良好。但是,the OpenGL Wiki warns
话虽如此,虽然这种力量可用,但最好不要使用它。它通常可以工作,但由于大多数OpenGL应用程序不这样做,因此它没有像OpenGL API的其他部分那样经过全面测试。所以你可能会以这种方式遇到更多的驱动程序错误。通常坚持每个着色器阶段有一个着色器对象。
本节写于2013年。对于合理的现代硬件/驱动程序,这仍然适用吗?
答案 0 :(得分:1)
恕我直言,维基音符完全可见。限制API因为有可能遇到错误?来吧,然后放弃编码:没有main(),没有错误。
就我个人而言,我从未遇到过在多个对象中分割着色器的问题,主要是在Nvidia,Amd和Intel上。也许其他平台的驱动程序有限,但这可以通过处理多个源文本来解决。
我个人认为没有任何正当理由可以避免使用多个对象,但是我会说很少需要缓存对象以将其与多个程序相关联。