THREE.WebGLRenderer: Context Lost (Uncaught TypeError: unhideTextInstance is not a function)

THREE.WebGLRenderer: Context Lost (Uncaught TypeError: unhideTextInstance is not a function)

我正在使用 Suspense:

react-three-fiber 中渲染带纹理的对象
<Suspense fallback={null}>
    <Image image={ images(`./texture.png`).default } /> // render plane with texture.png
    <Image image={ images(`./texture.png`).default } /> // render plane with texture.png
    <Image image={ images(`./texture.png`).default } /> // render plane with texture.png
</Suspense>

其中 Image 是自定义组件,它使用 useLoader 加载图像并渲染以图像作为纹理的平面。

通常不会出现问题。但偶尔,由于 Suspense 中的某些图像组合,canvas 无法呈现,我收到 THREE.WebGLRenderer: Context Lost 并出现以下错误:

Uncaught TypeError: unhideTextInstance is not a function

我尝试使用 gl.forceContextRestore() 处理 WebGL 上下文丢失,但是当 WebGL 上下文恢复时,canvas 仍然无法呈现。

在这种情况下,TypeError 被抛出是因为 Suspense 中包含注释。去掉评论,问题解决:

<Suspense fallback={null}>
    <Image image={ images(`./texture.png`).default } />
    <Image image={ images(`./texture.png`).default } />
    <Image image={ images(`./texture.png`).default } />
</Suspense>