1. 程式人生 > >BUG::關於Qt下的OpenGL在筆記本不接入電源時出現的 illegal non-ASCII character問題

BUG::關於Qt下的OpenGL在筆記本不接入電源時出現的 illegal non-ASCII character問題

BUG描述:

  筆者的筆記本為聯想Y7000p,預設有兩個GPU:  

  Nvidia GTX1060 與 HD核顯

  在不接外接電源的情況下使用Qt5.9的QOpenGLWidget框架寫程式碼時,有一個特別崩潰的bug,

  總會顯示 illegal non-ASCII character編碼錯誤,表現為著色器的第一行程式碼的第一個字元不識別,顯示為“???”。

解決方法:

  (1)接通電源,程式碼一切正常。

    (2)   在桌面新建txt文字檔案,將著色器程式碼拷貝進去,更改該txt文字名稱為著色器名稱,使用Qt的資原始檔載入該文字。

  (3)開啟N卡控制面板,首選圖形處理器改為N卡

解決思路:

  這個bug太有趣了,從沒遇到過這樣的問題,問題出現時,筆者正在裝python,以為是python的一些庫導致了程式編碼庫的選擇錯誤。立馬解除安裝了python,又重灌了Qt,問題依舊。

最後誤打誤撞發現瞭解決方法(2),以拷貝進txt文字的方式,解決第一個字元不識別的問題,(現在想來,應該是HD顯示卡不識別通過Qt新建的著色器檔案)。不過這樣重新修改著色器檔案太麻煩了,又是無意間,在插電源的情況下 ,程式碼恢復了正常。故推斷問題應該出在筆記本的電源選項上。更改了電源選項中所有“使用電池”的選項,使之與“插入電源”保持一致,問題依舊,最後才推斷問題應該出在顯示卡的選擇上,更改所有程式的預設顯示卡為N卡後,問題解決。