我正在努力解决以下问题:
我有一个对象,希望能够使用两组不同的顶点/片段着色器进行渲染,每组着色器均具有其均匀性和纹理,并可以在这两种设置之间来回移动。(我知道在这种情况下,我可能只有一个着色器,并且统一规定要运行哪个逻辑,但这是我无法做到的较大事情的一部分)
glCreateProgram()
)?我应该使用一两个gl程序(由glCreateProgram()创建)吗?
这要视情况而定。一般规则是避免在着色器代码内部分支。因此,如果您有2个不同的着色器,则要获得2种不同的效果,只需编译2个程序并绑定所需的程序即可。
如果我使用两个程序,可以丢弃一个未被使用的程序,然后在以后需要时对其进行重建吗?还是太慢了?
通常不需要这样做,这是错误的(也许除非您有大量内存问题)。着色器编译是一个缓慢的过程。
在应用程序启动或第一次需要时,一次编译所有必需的资源,然后分配它们并准备使用,这种情况更为常见。
一开始可以只编译一次着色器吗?
是。
对于所有其他问题:我认为您采用了错误的方法。
我会说:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句