現在,我需要在畫布上繪製許多圖像。畫布大小爲800x600px,我有很多256x256px(有些小)的圖像來繪製,這些小圖像將在畫布上組成一個完整的圖像。我有兩種方法來實現這一點。首先,如果我使用canvas 2D上下文,即context = canvas.getContext('2d')
,那麼我可以使用context.drawimage()
方法將每個圖像放在畫布的正確位置。WebGL VS Canvas 2D硬件加速
另一種方法,我使用WebGL在畫布上繪製這些圖像。這樣,對於每個小圖像,我需要繪製一個矩形。矩形的大小與此小圖像相同。此外,矩形位於畫布的正確位置。然後我使用圖像作爲紋理填充它。
然後,我比較這兩種方法的性能。他們的fps都將達到60,而動畫(當我點擊或移動鼠標時,畫布會重繪多次)看起來非常平滑。所以我比較他們的CPU使用率。我期望當我使用WebGL時,CPU將使用較少,因爲GPU將確保很多繪圖工作。但結果是,CPU使用率看起來幾乎相同。我試着優化我的WebGL代碼,我認爲它夠好。通過谷歌,我發現默認情況下,Chrome,Firefox等瀏覽器將啓用硬件加速。所以我試圖關閉硬件加速。然後第一種方法的CPU使用率變得更高。所以,我的問題是,因爲canvas 2D使用GPU加速,所以我需要使用WebGL來進行2D渲染嗎?畫布2D GPU加速和WebGL有什麼不同?他們都使用GPU。也許有其他方法可以降低第二種方法的CPU使用率?任何答案將不勝感激!
感謝您的回答,對於遲到的接受感到非常抱歉。正如您所說,WebGL和Canvas 2D都有其優勢和劣勢。我終於採用了WebGL。 – LiuGui
只需注意:2dContext也有'alpha'選項。 – Kaiido
你的意思是? – gman