0

我正在为俱乐部/派对的表演创建一个视听应用程序。它涉及以 60fps 运行的 webGL 动画。

动画响应可能每秒不断变化的多个参数(例如,旋转立方体的大小可能会随着音乐跳动)。例如,可能有 20 个参数,每秒都更改 60 次。这些参数在 UI 中表示为数字/可视条。

我正在使用 React/Flux/NWJS 来执行此操作,并且效果很好。但是我真的很喜欢 Redux,并且想将数据流更改为 Redux 模型。

我的问题是:以不可变的方式更新存储(例如,为每次更改复制它)会影响​​性能,当它每秒更改超过 60 次时?如果是这样,有没有一种方法可以让我绕过应用程序的某些部分,只使用 Redux 对应用程序进行不太频繁的更改。

4

1 回答 1

1

如果您将 WebGL 用于您的视觉效果,您可以保留 Redux 但跳过所有 React。Redux 独立于 React,你可以自由使用它的语义,然后在 Store 发生变化时通过注册回调来做一些事情subscribe

http://es.redux.js.org/docs/api/Store.html#subscribe

我不清楚您的应用程序的方面,是否会同时使用 WebGL 进行可视化和屏幕上的滑块/控件?

如果是这样,您仍然可以拥有一个 React 应用程序来托管您的 UI 控件和一个单独的 DIV,其中包含您的canvas. React 部分将使用标准 Redux 来保持参数状态,并且您的 WebGL 独立代码应该从每个商店中读取requestAnimationFrame并渲染您的场景。

您还可以使用 Redux 中间件,该中间件将操作排队并在 上分派requestAnimationFrame,如此处的文档中所建议(请参阅 rAF 调度程序示例)

http://redux.js.org/docs/advanced/Middleware.html#seven-examples

于 2017-02-04T14:47:00.083 回答