當前OpenGL驅動程序使用編譯着色器緩存位於 C:/用戶/名/應用程序數據/漫遊/ AMD | NVIDIA/glcache/...如何清除OpenGL着色緩存
不幸的是,它會導致程序崩潰差不多每當我更改某些着色器時,我目前通過手動刪除着色器高速緩存來修復這些着色器。
問題是,當我發佈新版本的程序時,是否有任何清除緩存的好方法?任何opengl擴展來控制緩存?或者來自操作系統的一些神奇的API?或者至少是找到文件夾的正確方法?
另一個問題:驅動程序使用哪些鍵來識別單個着色器?所以我可以在每次更改着色器時以某種方式更改密鑰。
它發生在我的電腦(amd gpu)和朋友的電腦(nvidia)上,還有一個。因此我認爲它不是OS也不是司機相關的。如果它不是一個常見問題,就像你說的那樣,在我的着色器加載/編譯/鏈接代碼中給我留下了問題,對吧?我做廣泛的檢查任何錯誤,我也測試它與調試上下文和錯誤回調設置,並沒有錯誤。接下來你會提出什麼建議?我應該編輯問題並添加加載代碼? – Tomas
@Tomas:是的,看到你的着色器加載代碼會有所幫助。另外,程序崩潰狀態的回溯將有助於:在調試模式下編譯並使用調試器運行。 Visual Studio提供了一個堆棧跟蹤窗口,在GDB中你可以使用「backtrace」命令。您不會看到驅動程序中發生了什麼,但是您可以看到程序執行哪些步驟導致崩潰。 – datenwolf