2015-09-04 85 views
4

我正在爲桌面設備開發一個包含PIXI.js的遊戲。 PIXI提供WebGL和Canvas渲染器,我們將在設備支持的任何位置使用WebGL。如何選擇最高性能的渲染器,畫布或WebGL

我的問題是,一些低端設備技術上支持 WebGL,雖然它運行不好,由於有一個緩慢的GPU。在某些情況下,Canvas渲染效果會更好。

如何在運行時決定使用哪個渲染器?

也許WebGL上下文包含一些有用的信息。

+0

(原生的)WebGL上下文沒有任何性能信息,但是測量你的gameloop中的幀時間應該這樣做容易。 –

+1

你有沒有考慮過像大多數PC遊戲那樣要求用戶這樣做? – gman

+0

@gman好的建議,但我們的用戶可能不知道該消息是在說什麼。他們不是技術最好的一羣。 – Drahcir

回答

3

正式方法是在上下文創建時使用failIfMajorPerformanceCaveat標誌。這裏的鏈接說明它應該如何工作: https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2.1

它在Chrome上支持了一段時間(自2013年起我認爲),所以很有可能排除幾個「慢」實現。

不好的消息是,截至編寫PixiJS時,似乎仍無法將任意參數傳遞給WebGL上下文創建。我還沒有重新檢查,但問題是目前尚未正式關閉: https://github.com/pixijs/pixi.js/issues/1738

因此,您將不得不劫持PixiJS代碼或手動創建Web上下文。

另外,當然,並非所有瀏覽器都支持這個相對較新的標誌。

如果穩定性比性能更重要,另一個選擇是在4.4版本之前禁用原生Android瀏覽器的WebGL,其中Chrome Web View正式引入。這將排除舊的自定義WebGL實現(例如Sony xperia one)。

就我個人而言,我不願意在應用程序開始時選擇渲染實施進行壓力測試。性能上的小故障/尖峯可能導致在完美的硬件上切換到畫布。但是如果你想走這條路線,有關於在PIXI中實現它的討論: http://www.html5gamedevs.com/topic/1733-detect-performance-issues-to-display-a-message/