我正在使用Texture Packer为我的所有游戏图像资源创建精灵表。我最终使用5张多件包装,最多2048x2048。我有大量的精灵被加载到各种容器,精灵,tilingsprites等。我应该根据他们将要加载的容器更智能地创建这些精灵表吗?
我觉得我做的事情从根本上是错误的,因为我的表现似乎并不是最好的。我剥夺了我的游戏,只加载了6个精灵,试图找到问题的根本原因。我甚至将我的精灵表分成了单独的容器。因此容器'A'使用来自精灵表'A'的图像,而容器'B'使用来自精灵表'B'的图像。
即使加载了这些非常小的图形,我的CPU使用量也会急剧上升,而我的计算机风扇也会疯狂。看起来电脑似乎非常努力地只显示6个精灵。当我尝试pixijs网站上的演示/示例时,我没有注意到。
我真的不确定我做错了什么。我的图片太大了吗?我有一些约1440x900像素。这些图像都被压缩,所以尺寸不是太大但是大尺寸的精灵会减慢速度吗?我会显示一些代码,但我的代码库非常大。我在canvas和webgl上尝试过这个。 Webgl表现更好,但我得到了相同的CPU峰值。
答案 0 :(得分:1)
在webGL上,显示图形是GPU的责任。因此,如果CPU窒息,在使用webGL时,我会非常肯定自己,问题出在代码中而不是精灵大小。基本上,webGL只能限制它可以显示多大的纹理:https://www.khronos.org/registry/webgl/sdk/tests/conformance/limits/gl-max-texture-dimensions.html,https://webglstats.com/webgl/parameter/MAX_TEXTURE_SIZE
因此在webGL中,最佳CPU应该只将精灵上传到GPU一次,之后CPU改变精灵的位置并将新位置发送到GPU,每个动画周期和GPU重绘精灵。但是你提到你的代码库很大,所以我怀疑这是个人的核心问题。
您应该找出代码的哪个部分导致峰值。你可以用例如chrome devtools为此进行分析并继续从那里开始。