c – 在OpenGL引擎中组织GLSL着色器

哪个更好 ?

>有一个着色器程序有很多制服指定
要使用的灯或映射(例如,我需要一个网格进行视差映射,另一个视差/镜像映射)。我会为缓慢传输制作一个缓存的制服列表,如果需要,可以为每个下一个网格更改几个制服。
>为每个需要的情况下有很多着色器程序,每个具有少量的制服,并且如果需要,为每个网格执行glUseProgram的延迟绑定。这里我假设网格正确地分批,以避免冗余开关。

我知道的大多数现代引擎有一个“着色缓存”,并使用第二个选项,因为显然它的速度更快。

此外,您还可以查看允许动态链接的ARB_shader_subroutine。但我认为它只有DX11类硬件可用。

http://stackoverflow.com/questions/4649801/organizing-glsl-shaders-in-opengl-engine

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 在OpenGL引擎中组织GLSL着色器