我试图理解以下内容:
我有一个对象,我希望能够使用两组不同的顶点/片段着色器进行渲染,每个着色器都有它们的制服和纹理,并在这两个设置之间来回切换。 (我知道在这种情况下,我可以只使用一个带有统一的着色器来指示运行哪个逻辑,但这是我无法做到的更大事情的一部分)
glCreateProgram()
创建)吗?答案 0 :(得分:4)
我应该使用一个或两个gl程序(由glCreateProgram()创建)吗?
这取决于具体情况。一般规则可以避免在着色器代码内进行分支。因此,如果您有2个不同的着色器,对于2种不同的效果,只需编译2个程序并绑定所需的着色器。
如果我使用两个程序,丢弃未使用的程序可以, 如果以后需要重建它?还是太慢了?
这通常不需要和错误(可能除非您有巨大的内存问题)。着色器编译是一个缓慢的过程。
在应用程序启动时或首次需要时编译所有必需的资源更为常见,并将它们分配并准备好使用。
我可以在开头只编译一次着色器吗?
是
对于所有剩下的问题:我认为你采取了错误的方法。
我会说: