2012-12-22 52 views
14

(現在的問題是不特定於three.js所,但我會用它作爲一個例子)使用javascript檢測設備CPU/GPU性能?

我一直在使用three.js所到最近開發一個Web應用程序接口和書面的WebGL和Canvas渲染器(之間有一些不錯的後備對於桌面瀏覽器)。

但現在的問題變成了如何正確檢測設備能力,有2個方面的問題:

  1. 瀏覽器功能(靜態功能,如WebGL的/月):這是網絡社區內很大程度上解決使用簡單的特徵檢測。
  2. 設備能力:這是一個很難的部分,沒有直接訪問設備的硬件信息,我們需要一些方法來告訴我們是否應該回退到硬件要求較低的代碼。

一個值得注意的例子:火狐移動/歌劇移動的權利要求的支持WebGL的,但是越野車或由設備硬件的限制。

一些變通辦法我想出迄今:

  1. 使用一個共同的特點是性能指標 - 觸摸設備,例如,具有一般不太強大的硬件。騙局:這不是面向未來的。
  2. 黑名單已知嬰兒車的瀏覽器/設備 - UA嗅探將是不可避免的,並且它可以是很難維護。
  3. 性能測試 - 因此這個問題,除了運行代碼和措施幀率,有更好的選擇?

或者,也許它並沒有這麼難,有沒有其他的建議?

回答

0

您可以使用http://webglstats.com/進行WebGL硬件支持和功能檢測。

+1

雖然統計很有意思,我不知道這是如何應用到我的網站的個人用戶(以啓用備用正確,沒有設備/瀏覽器黑名單)。另外從代碼看來,檢測是在iframe中完成的,我保留對方法選擇的懷疑。 – bitinn

+0

確實。這是非常有趣的信息,但它只是功能檢測,您可以爲您的每個用戶自己做。它不會告訴你性能,除非你想在功能實現和性能之間畫出一些非常不友善的關係。 – desau

12

我已經結束了使用上,我們想利用帆布功能,可在高規格的CPU/GPU的臺式機,以及低速設備如表和手機項目績效衡量方法。

基本上,我們開始在最低限度場景複雜,如果renderloop只需不到爲33ms,我們增加了複雜性(我們也降低複雜性,如果renderloop開始時間太長在以後的時間)。

我想你的情況你可能需要運行一個快速的畫布和webgl性能測試,然後選擇一個。花了一些時間研究這個,我還沒有遇到一些棘手的非顯而易見的技術,可以更好地解決這個問題。

+0

愛你登陸的解決方案。感謝分享。 – jlmakes

+0

+1,動態檢測和調整是唯一的方法。特別是如果您想要支持任何使用電池的設備,並可能在飛行時間切換到低性能模式以節省電量。如果你進行一次靜態檢測,你將會錯過這種環境變化。 –

0

如果您使用three.js,則只需使用detector.js查看是否啓用了webgl。也遠離畫布畫家將會有所幫助。使用webglrenderer或者softwarerender。因爲它們允許更多的頂點。 softwarerender是相當新的,需要一些工作,但可以使用。