javascript - PixiJS 消耗大量 GPU
问题描述
所以我在 Pixi 有一个场景,里面有大约 7-8 个纹理。一对夫妇只是循环简单的变换(例如像风扇一样旋转等),有些是静态的。
根本没有与它交互(它在一个单独的窗口中),它的存在让我的 16BG i7 MacBook Pro 像疯了一样发热,它占用了 50% 的 CPU。
这是我如何设置其中一个旋转动画的示例。里面有什么可疑的东西吗?我不敢相信它消耗了多少能量,我即将扔掉我所有的 Pixi 代码,只使用 CSS,因为它似乎更有效。
rotorPositions.forEach((rotor, index) => {
const sprite = new PIXI.Sprite(resources.rotor.texture)
sprite.position.set(foregroundContainer.width/100 * rotor[0], foregroundContainer.height/100 * rotor[1])
foregroundContainer.addChild(sprite)
sprite.anchor.x = 0.5
sprite.anchor.y = 0.616
let speed = 0.03
sprite.zIndex = 3
if(index == 1){
speed = 0.04
sprite.rotation = 0.5
}
app.ticker.add(() => {
sprite.rotation += speed
})
})
解决方案
预加载纹理并尝试使用 cacheAsBitmap 属性。它拍摄显示对象的快照,从而获得更好的性能。
这里是一个例子:multiple textures example with cacheAsBitmap
编辑:您正在使用 foreach 循环。循环可能非常棘手,可能使用 console.log 并打印一个计数器变量来查看循环执行了多少次。
推荐阅读
- python - 如何根据第二个值对元组列表进行排序而不对其进行硬编码
- android - 如何在 Android 模拟器上使用背景位置?
- php - 如何使用 PHP 打印到 windows 网络打印机?
- mysql - 我的 Mysql Cross Join 数据库失败...谁能帮帮我?
- c# - 我在 Visual Studio 中看不到我的引用节点
- telegraf-plugins - Telegraf processor.regex 创建一个新字段
- python-3.x - fpdf.cell 高度参数生成新页面而不是换行符
- python - 如何为 python 请求获取 ca 证书?
- python - 如何使用 3X3 窗口将熊猫数据框拆分为多个数据框?
- vue.js - PowerBI 嵌入到 VueJS