如何清除opengl着色器缓存

how to purge opengl shader cache

本文关键字:缓存 opengl 何清除 清除      更新时间:2023-10-16

当前的opengl驱动程序使用编译的着色器缓存位于c://名称/appdata/漫游用户/amd |英伟达/glcache…

不幸的是,它导致程序崩溃几乎每次我改变一些着色器,我目前通过手动删除着色器缓存修复。

问题是,当我发布新版本的程序时,是否有清除缓存的好方法?任何opengl扩展来控制缓存?还是来自操作系统的一些神奇的API ?或者,至少,找到文件夹的正确方法?

另一个问题:驱动程序使用什么键来识别单个着色器?这样我就可以在每次改变着色器时改变键了

不幸的是,它导致程序崩溃几乎每次我改变一些着色器,我目前通过手动删除着色器缓存修复。

如果发生这种情况,那么您的系统和/或您的驱动程序安装有严重的问题。这绝不能发生,如果它发生了,那么它就不是OpenGL程序应该关心的事情。

另一个问题:驱动程序使用什么键来识别单个着色器?

通常是一些从着色器源AST派生的散列(例如,只是添加一个空格或重命名一个符号不会做到这一点)。

问题是,当我发布新版本的程序时,是否有清除缓存的好方法?

据我所知没有。在OpenGL规范中,着色器是一个"黑盒"。你发送GLSL源文本,它被编译和链接,就是这样。像着色器缓存或内部表示这样的东西不是OpenGL指定的。

任何opengl扩展控制缓存?

不。从技术上讲,供应商可以为此添加供应商特定的扩展,但没有人这样做。

还是来自操作系统的一些神奇的API ?

没有官方规定。

或者,至少,找到文件夹的正确方法?