如何清除opengl着色器缓存
how to purge opengl shader cache
当前的opengl驱动程序使用编译的着色器缓存位于c://名称/appdata/漫游用户/amd |英伟达/glcache…
不幸的是,它导致程序崩溃几乎每次我改变一些着色器,我目前通过手动删除着色器缓存修复。
问题是,当我发布新版本的程序时,是否有清除缓存的好方法?任何opengl扩展来控制缓存?还是来自操作系统的一些神奇的API ?或者,至少,找到文件夹的正确方法?
另一个问题:驱动程序使用什么键来识别单个着色器?这样我就可以在每次改变着色器时改变键了
不幸的是,它导致程序崩溃几乎每次我改变一些着色器,我目前通过手动删除着色器缓存修复。
如果发生这种情况,那么您的系统和/或您的驱动程序安装有严重的问题。这绝不能发生,如果它发生了,那么它就不是OpenGL程序应该关心的事情。
另一个问题:驱动程序使用什么键来识别单个着色器?
通常是一些从着色器源AST派生的散列(例如,只是添加一个空格或重命名一个符号不会做到这一点)。
问题是,当我发布新版本的程序时,是否有清除缓存的好方法?
据我所知没有。在OpenGL规范中,着色器是一个"黑盒"。你发送GLSL源文本,它被编译和链接,就是这样。像着色器缓存或内部表示这样的东西不是OpenGL指定的。
任何opengl扩展控制缓存?
不。从技术上讲,供应商可以为此添加供应商特定的扩展,但没有人这样做。
还是来自操作系统的一些神奇的API ?
没有官方规定。
或者,至少,找到文件夹的正确方法?
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 了解 GLM- openGL 中的相机转换
- 如何在全屏模式下(在OpenGL中)使背景透明
- 为什么我不能使用 EGL 创建无头 OpenGl 上下文?
- OpenGL大的3D纹理(>2GB)非常慢
- OpenGl glm rotate
- cmake更新缓存的变量
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 试图对缓存进行跨步测试,但程序并没有结束
- OpenGL在启用深度测试时不会丢弃我的碎片
- OpenGL相机和相机空间转型的困惑
- 缓存std::数组的选定元素,并在c++中自动保持其一致性
- 通过ccmake在cmake中缓存依赖选项
- OpenGL将纹理四边形渲染为(0,0)
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 发布旋转矩阵(openGL/glm)
- 缓存OpenGL纹理
- OpenGL 3.2:缓存编译的着色器
- 如何清除opengl着色器缓存
- 我应该缓存OpenGL状态,比如当前绑定的缓冲区,还是OpenGL会这样做