From b71d18b166f837c264e6ec4e431eec5a89c936c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 22 Sep 2026 13:18:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=BA=E6=99=AF=E9=87=8A=E6=94=BE=E4=B8=8D?= =?UTF-8?q?=E5=86=8D=E5=BC=BA=E5=88=B6=E4=B8=A2=E5=A4=B1=20WebGL=20?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - packages/model3d-viewer/src/scene.ts:teardown 去掉 renderer.forceContextLoss(),只保留 renderer.dispose(),并写明原因;宿主 Model3DViewer 全程复用同一个 ,强制丢上下文会让下一个模型拿到已丢失的上下文渲染全黑 验证:npx tsc(严格模式单文件检查)、npx vitest run packages/model3d-viewer --- packages/model3d-viewer/src/scene.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/model3d-viewer/src/scene.ts b/packages/model3d-viewer/src/scene.ts index 24d323b71..f9fd1eab2 100644 --- a/packages/model3d-viewer/src/scene.ts +++ b/packages/model3d-viewer/src/scene.ts @@ -173,12 +173,9 @@ export async function createModel3dViewerScene( roomEnvironment = null; } if (renderer) { + // 只 dispose,不 forceContextLoss:宿主全程复用同一个 , + // 丢掉上下文后下一次 new WebGLRenderer 会拿回同一个已丢失的上下文,画布全黑。 renderer.dispose(); - try { - renderer.forceContextLoss(); - } catch { - // 上下文已经丢失时忽略,释放流程继续。 - } renderer = null; } }