2017-06-04 66 views
0

我使用Texture Packer爲我的所有遊戲圖像資源創建精靈圖表。我最終使用了5張最大爲2048x2048的多件包裝。我有很多的精靈被加載到各種容器,精靈,tilingsprites等。我應該創建這些精靈表更智能地基於他們將被加載的容器?從PIXI.JS中的精靈圖片加載圖像時,精靈圖紙的順序或數量是否重要?

我覺得我正在做一些根本性的錯誤,因爲我的表現似乎並不是最好的。我把我的遊戲剝離到只加載6個精靈,試圖找出問題的根源。我甚至將我的精靈表分成單獨的容器。因此容器'A'使用來自精靈表'A'的圖像,而容器'B'使用來自精靈表'B'的圖像。

即使加載了這些非常小的圖形,我的CPU使用率高峯和我的電腦迷也瘋狂了。它似乎只是計算機正在努力工作,只顯示6個精靈。我沒有注意到,當我嘗試從pixijs網站的演示/例子。

我真的不知道我在做什麼錯。我的圖片太大了嗎?我有一些約1440x900像素。圖像全部被壓縮,所以尺寸不是太大,但是大尺寸的精靈會減慢速度嗎?我會展示一些代碼,但是我的代碼庫相當大。我已經在canvas和webgl上試過了。 Webgl執行得更好,但我得到了兩個相同的CPU峯值。

+0

是,否?隨你挑,因爲問題可能是任何事情,圖像大,CPU速度太慢,GPU速度慢,資源不足,代碼不好,瀏覽器不好,或任何一個或多個更多。如果你想知道你的代碼爲什麼掙扎,你將不得不提供一些代碼。個人我懷疑壞事件處理和實例化,或者在渲染到畫布時留下開放路徑,他們通常可以讓設備的粉絲前往。 – Blindman67

回答

1

在webGL上,顯示圖形是GPU的責任。所以如果CPU窒息,那麼在使用webGL時,我會相當確定自己,問題出在你的代碼中,而不是在精靈大小。基本上WebGL的只是有限制它有多大的紋理可以顯示:https://www.khronos.org/registry/webgl/sdk/tests/conformance/limits/gl-max-texture-dimensions.htmlhttps://webglstats.com/webgl/parameter/MAX_TEXTURE_SIZE

所以在WebGL的,最佳的CPU應該上傳精靈到GPU只有一次,之後CPU改變精靈的位置,併發送至GPU的新位置,每個動畫週期和GPU重新繪製精靈。但是你提到你的代碼庫很大,所以我個人會懷疑這是核心問題。

您應該知道代碼的哪一部分會導致尖峯。您可以使用例如chrome開發工具,並從那裏繼續前進。

+0

事實證明,在我的遊戲中,我一直在調用renderer.render()。如果需要渲染,它又轉到所有子對象並調用它們的渲染方法。 pixi是否自己做一些基礎渲染?通過在我的遊戲循環中反覆調用renderer.render(),它實質上是每個循環渲染兩次?我修改了一切,只在需要時調用渲染。不知道這是否是一個很好的解決方案,但它絕對保持我的CPU峯值。感謝您的答覆。 – hanesjw

+0

我會說這樣做很聰明。所以基本上只需要在需要時調用渲染,並且還可以限制只渲染遊戲的可見部分。因此,只需將displayObject.visible = false設置爲不想呈現的那些。 – Hachi