【问题标题】:performance issue with audioreactive visuals made with pixi and p5 sound lib使用 pixi 和 p5 sound lib 制作的 audioreactive 视觉效果的性能问题
【发布时间】:2016-07-18 08:00:38
【问题描述】:

查看示例here

我想这取决于你的机器,但对我来说,在第一首歌之后,帧率就像疯了一样下降。我确保没有多余的精灵(4:2 图像和 2 个置换贴图)。

这是一个 pixi 的东西,也许是 WebGL?我不确定如何改进它或在哪里寻找更好的性能。

【问题讨论】:

  • 如果你还没有,那么我建议的第一件事是尝试使用浏览器分析来跟踪性能,例如:developer.chrome.com/devtools/docs/cpu-profiling,因为第一个假设是,它通常来自 javascript,你可以调试最简单。如果您无法进行分析,请尝试将分析器结果发送给我或提供您的代码以供审查
  • @Hachi 感谢您的回复!我记录了一个 cpu 配置文件,您可以在此处下载:flowen.nl/CPU-20160406T123821.cpuprofile.zip

标签: javascript performance webgl pixi.js


【解决方案1】:

好的。我发现了这个问题。您一次又一次地向舞台(stage.addChild(displacementTexture) 添加displacementTexture 并且您从未真正删除它。所以您的totalSpritesOnStage 无法正常工作。

添加这样的东西怎么样:

if (stage.children.length > 4) {
    // let's destroy the sprite now
    stage.removeChildren(4);

虽然我没有非常彻底地检查功能,但它很快看起来似乎也可以使用。

这也让我个人感到困扰,因为声音被一次又一次地下载:)

function preload(song) {
console.log('preloading song: ' + currentSong);
console.log(song.filename);
if (allSounds[song]) {
    sound = allSounds[song];
    sound.setVolume(volume);
    sound.play();
    return;
}
allSounds[song] = sound = new p5.SoundFile('songs/' + song.filename,
    onMusicLoaded,
    h.onError
);

// The volume is reset (to 1) when a new song is loaded. so we force it 
sound.setVolume(volume);
}

【讨论】:

  • 谢谢哈奇!这无疑将它提高了 1721% ;) 感谢您给我关于声音的额外指针,将下载的对象保存到数组中然后检查它是否存在是有意义的。再次感谢!
  • 我不确定我是否理解这部分:allSounds[song] = sound = new p5.Sound.... 如果我用所有歌曲填充数组,我不应该插入它们吗在某个索引处(等于'currentSong'(这是1-songs.length之间的nr)然后检查索引是否已经存在?比我可能还需要制作allSounds.length =songs.length。是否这有意义吗?
  • @flowen 我不完全确定,你试图通过使 allSounds 成为数组而不是对象来改变什么。现在的目的只是提供一个缓存,这样 p5 就不会总是一次又一次地下载和初始化文件。如果它们已经下载并初始化过,我看不出为什么它应该通过调用 p5.SoundFile 再次完成这项工作。当然,您可以使用任何您想要的方式。哦,我不记得提到,这是一个非常酷的演示。我听说过音频反应的东西,但还没有真正看到它的使用:)。
  • 有多首歌曲,所以我以为你的方式只缓存了一首歌曲,因为你一次又一次地覆盖它,对吧?和thx男人!我在这里写了一些关于它的内容:medium.com/@flowen/… 那里有一些链接可以向您展示使用 three.js 的不同音频反应的东西。菲利克斯·特纳是我的上帝。
猜你喜欢
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 2018-09-25
  • 1970-01-01
相关资源
最近更新 更多