THRE.WebGLRenderer:上下文丢失(未捕获类型错误:unhideTextInstance不是函数)



我正在使用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内部的一些图像组合,画布无法渲染,我收到THREE.WebGLRenderer: Context Lost时出现以下错误:

Uncaught TypeError: unhideTextInstance is not a function

我尝试用gl.forceContextRestore()处理WebGL上下文丢失,但当WebGL上下文恢复时,画布仍然无法渲染。

在这种情况下,由于Suspense中包含注释,所以会抛出TypeError。删除评论,问题就解决了:

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

相关内容

  • 没有找到相关文章