反应三纤维自定义着色器中的 WebGL 在道具更改或 window 调整大小时冻结

WebGL in react-three-fiber custom shader freezes on props change or window resize

我在 react-three-fiber 场景中有一个自定义着色器 material,它在着色器 material 本身中发生了一些动画。我还使用 useUpdate 挂钩将制服设置为在暗模式切换时更新。但是,每当我调整 window 的大小时,或者每当我切换暗模式时,着色器 material 中的动画就会冻结并且暗模式不会切换。然而,平面缓冲区几何体上的轨道控制仍然有效,因此冻结的不是场景,而是着色器 material 本身。如果我切换了暗模式并进行了热重载,着色器 material 会更新,我会看到着色器 material 处于暗模式状态,但这是我可以实现的唯一方法。每当我从原始状态切换黑暗模式时,它都会冻结。即使我打开开发工具并从中调整 window 大小,着色器动画也会冻结。

我已经在互联网上搜索了遇到此问题的任何人,除非我的措辞不正确,否则我似乎找不到任何东西。

有谁知道是什么原因造成的?除了这个着色器 material 冻结任何状态变化之外,其他一切似乎都工作正常。

我能够在这里为任何未来的读者找到解决方案:https://github.com/pmndrs/react-three-fiber/discussions/440