有没有办法在使用OpenGL 3.2的情况下缓存已编译的着色器程序? 我已经研究了ARB_get_program_binary,但发现我的驱动程序不支持它。 我希望尽可能兼容旧的显卡,因此转换到OpenGL 4 不是一个好的解决方案。 我正在使用Qt5.1,并使用QOpenGLFunctions_3_2_Core 来访问OpenGL函数。
除了ARB_get_program_binary之外,OpenGL没有查询/缓存编译程序对象的功能。请注意,有些驱动程序会自行缓存程序二进制文件,例如使用~/.nv/GLCache目录存储缓存对象的NVidia专有Linux驱动程序。我不确定其他驱动程序是否也具有这样的缓存,但我认为很可能存在。