我正在爲桌面設備開發一個包含PIXI.js的遊戲。 PIXI提供WebGL和Canvas渲染器,我們將在設備支持的任何位置使用WebGL。如何選擇最高性能的渲染器,畫布或WebGL
我的問題是,一些低端設備技術上支持 WebGL,雖然它運行不好,由於有一個緩慢的GPU。在某些情況下,Canvas渲染效果會更好。
如何在運行時決定使用哪個渲染器?
也許WebGL上下文包含一些有用的信息。
我正在爲桌面設備開發一個包含PIXI.js的遊戲。 PIXI提供WebGL和Canvas渲染器,我們將在設備支持的任何位置使用WebGL。如何選擇最高性能的渲染器,畫布或WebGL
我的問題是,一些低端設備技術上支持 WebGL,雖然它運行不好,由於有一個緩慢的GPU。在某些情況下,Canvas渲染效果會更好。
如何在運行時決定使用哪個渲染器?
也許WebGL上下文包含一些有用的信息。
正式方法是在上下文創建時使用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/
(原生的)WebGL上下文沒有任何性能信息,但是測量你的gameloop中的幀時間應該這樣做容易。 –
你有沒有考慮過像大多數PC遊戲那樣要求用戶這樣做? – gman
@gman好的建議,但我們的用戶可能不知道該消息是在說什麼。他們不是技術最好的一羣。 – Drahcir