2016-11-02 46 views
1

有沒有辦法通過WebGL API在客戶端檢測Firefox中的合成後端(無論是OpenGL,Basic/Cairo還是D3D)?我特別感興趣的是區分OpenGL/D3D和基本合成。如果無法使用WebGL API,是否有其他方式來確定合成後端(about:support除外)?在Firefox中檢測合成後端

回答

2

簡單的答案是NO ,你不能從JavaScript

檢測合成後端在Firefox中,至少不會

在Chrome中,你可以使用WEBGL_debug_renderer_info extension

至於爲什麼它不在Firefox中可用,並且在Chrome中可用,在哪些方面更重要,隱私或有用性上存在意見分歧。

以下示例很容易描述隱私問題。如果你瞭解GPU,那麼你就更瞭解用戶。例如,檢查GPU,看它是AMD FirePro D500。如果是,你現在知道這個人有一個4000美元的Mac Pro。爲他們投放昂貴的廣告。

有用的一面是,有許多較舊的GPU可以運行許多webgl演示就好,但無法運行像Google Maps那樣複雜的webgl。由於無法運行,它們要麼運行速度太慢,要麼甚至崩潰「WebGL擊中一個障礙,老鼠!」。無法分辨哪個GPU無法爲具有這些GPU的人們提供良好的用戶體驗。

還有其他建議,例如WebGL有一些性能指標,網站可以用它來決定製作圖形的複雜程度。不幸的是,沒有任何指標可以真正起作用。每種類型的GPU都有其優點和缺點。一個GPU在頂點轉換時可能很快,但在光柵化時速度較慢。另一種可能是快速渲染不透明的東西,但渲染半透明的東西時速度慢。其他人可能只會顯示他們的速度超過一定限度。最重要的是,它會給瀏覽器供應商帶來很大的負擔,以某種方式編寫基準測試(在用戶的機器上遠程運行),以提供這樣的指標。換句話說,這個解決方案被認爲已被放棄。

儘管如此,WEBGL_debug_renderer_info會返回用戶機器的GPU和驅動程序信息,但這並不直接告訴您瀏覽器的合成後端是什麼。它只是告訴你瀏覽器使用什麼WebGL。雖然2可能是相同的。