我正在使用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>