当前OpenGL驱动程序使用编译着色器缓存位于 C:/用户/名/应用程序数据/漫游/ AMD | NVIDIA/glcache/...如何清除OpenGL着色缓存
不幸的是,它会导致程序崩溃差不多每当我更改某些着色器时,我目前通过手动删除着色器高速缓存来修复这些着色器。
问题是,当我发布新版本的程序时,是否有任何清除缓存的好方法?任何opengl扩展来控制缓存?或者来自操作系统的一些神奇的API?或者至少是找到文件夹的正确方法?
另一个问题:驱动程序使用哪些键来识别单个着色器?所以我可以在每次更改着色器时以某种方式更改密钥。
它发生在我的电脑(amd gpu)和朋友的电脑(nvidia)上,还有一个。因此我认为它不是OS也不是司机相关的。如果它不是一个常见问题,就像你说的那样,在我的着色器加载/编译/链接代码中给我留下了问题,对吧?我做广泛的检查任何错误,我也测试它与调试上下文和错误回调设置,并没有错误。接下来你会提出什么建议?我应该编辑问题并添加加载代码? – Tomas
@Tomas:是的,看到你的着色器加载代码会有所帮助。另外,程序崩溃状态的回溯将有助于:在调试模式下编译并使用调试器运行。 Visual Studio提供了一个堆栈跟踪窗口,在GDB中你可以使用“backtrace”命令。您不会看到驱动程序中发生了什么,但是您可以看到程序执行哪些步骤导致崩溃。 – datenwolf