在nVidia上,大型UBO的glLinkProgram变慢

时间:2016-01-24 00:45:14

标签: c++ c opengl glsl nvidia

我正在开发一个OpenGL 4.3应用程序,它使用统一缓冲区来处理很多事情,主要是多次绘制(所有矩阵和材料数据都打包到两个UBO中,每帧只进行一次绘制调用)。

除了着色器需要很长时间才能链接(最多<{>> glLinkProgram)之外,这种方法效果很好。 我注意到链接时间取决于着色器中使用的UBO的大小。通过将所有缓冲区限制为几百个字节,我获得了更好的性能。 (我通常只在我的实现中分配最大大小为64kB)

虽然nVidia驱动程序着色器缓存在限制此功能方面做得很好(同样可以使用着色器二进制文件完成),但是在制作经常生成新着色器的编辑器时尤其令人讨厌。

我真的想知道除了使用更小的UBO之外还有其他工作吗? 而驱动程序需要花费很多时间。

0 个答案:

没有答案