哪个更好 ?
To 拥有一个包含大量制服的着色器程序指定
要使用的灯光或要执行的映射(例如,我需要一个网格进行视差映射,另一个网格进行视差/镜面映射)。我会为延迟传输创建一个制服的缓存列表,并且如果需要的话,只需为每个下一个网格更改几个制服。
To 有很多着色器程序对于每一种需要的情况,每一种都有少量的制服,并进行惰性绑定glUse程序对于每个网格(如果需要的话)。在这里,我假设网格已正确批处理,以避免冗余切换。
我知道的大多数现代引擎都有“着色器缓存”并使用第二个选项,因为显然它更快。
您还可以查看允许动态链接的 ARB_shader_subroutine。但我认为它仅适用于 DX11 级硬件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)