0x00 楔子
最近客戶在使用我們的的三維視覺化平臺的時候,總是會出現瀏覽器崩潰,webgl context lost的情況。 這種請一般出現在電腦配置很低的電腦上,比如沒有獨顯,只有很小現存的整合顯示卡的電腦。
但是客戶的電腦大部分都是配置還不錯,有獨立的顯示卡。
經過摸索和分析,最終發現了問題所在:就是電腦根本沒有用上獨立顯示卡,也就是說雖然硬體上有獨立顯示卡,但是實際上三維程式還是用的整合顯示卡,導致跑不動三維程式。
如何判斷三維程式是否用上了獨立顯示卡呢,其實我們可以開啟電腦的工作管理員,開啟"效能"標籤,一般可以看到兩個GPU(Intel開頭的是整合顯示卡,NVIDIA開頭的是獨立顯示卡)
從圖中,可以看出 GPU0(集顯) 使用率搞到88%,而GPU1(獨顯) 使用率卻未0,表示三維應用程式未使用獨顯。
0x01 原因探究
經過測試,發現電腦不使用獨立顯示卡的原因大概分為幾類:
驅動未正確安裝
獨立顯示卡的驅動未安裝,或者顯示卡的驅動未正確安裝,導致電腦的獨立顯示卡不能使用。 可以通過電腦的裝置管理器檢視是否又獨立顯示卡的介面卡,如果沒有,多半是未有安裝顯示卡驅動。
顯示器未接獨立顯示卡
如果是桌上型電腦接主機板自帶的VGA/DVI/HDMI都是核顯負責輸出和運算,不接獨顯的介面不能發揮任何作用。反之,接了獨顯,那麼CPU核顯也會自動遮蔽不發揮作用。典型的例子就是你接了獨顯,比如N卡,只會有一個NVIDIA控制皮膚,而不會再出現一個英特爾核芯顯示卡控制介面。
如果是筆記本的話,一般帶DP介面的一定是獨顯介面,其他介面如HDMI,VGA都是核顯輸出,但是筆記本硬性規則都是核顯負責畫面輸出,獨顯負責需要執行的3D應用程式,這是英特爾強制規定的,所以筆記本除了有N卡獨顯的NVIDIA控制皮膚以外,還會有英特爾核芯顯示卡控制皮膚。值得注意的是,在6代以後的筆記本,有些bios提供了遮蔽核顯的選項,有些是可以允許自由切換,或者一些超高階的筆記本,顯示卡為1070,1080甚至1080 SLI的,直接出廠就遮蔽了核顯,沒有這個核顯的需要。測試都表明,核顯在1070以上的筆記本機型,某些優化不到位的遊戲會拖累獨顯效能,導致幀數下降,整體也比單獨執行獨顯幀數要稍低。
程式指定使用集顯
膝上型電腦,電腦可以同時使用集顯和獨顯。
開啟電腦NVIDIA 控制皮膚,可以指定程式使用獨顯還是集顯,如下圖所示:
如果指定了瀏覽器,比如chrome使用整合顯示卡,那麼webgl也不會用到獨立顯示卡。
0x02 如何解決
其實看了前面的“原因探究”,可以很方便的給出相應的解決方案。
如果未安裝顯示卡驅動,就安裝顯示卡驅動即可。安裝的時候,需要注意選擇正確的版本。
如果是桌上型電腦,檢查顯示器接頭是否接在獨立顯示卡的介面上,如果接在整合顯示卡的介面上,改變介面即可。
如果是程式指定了集顯,改成使用獨顯即可。
過程不在詳述。
0x03 結語
如果發現電腦配置不錯,但是簡單的三維應用很卡,多半是上述原因。
如果對視覺化感興趣,可以和我交流,微信541002349。
關注公號“ITMan彪叔” 可以及時收到更多有價值的文章。