gpt4 book ai didi

three.js - 清理 Threejs WebGl 上下文

转载 作者:行者123 更新时间:2023-12-03 12:42:20 50 4
gpt4 key购买 nike

我在清理 WebGl-Scenes 时遇到问题。我正在使用 Three.js 和 WebGlRenderer。在我的应用程序中,我必须经常更改 View ,因此需要一直渲染新场景。直到现在我销毁并重新初始化整个 Threejs 场景。切换场景约 15 - 20 次后,我收到以下警告:
WARNING: Too many active WebGL contexts. Oldest context will be lost.
多次切换后,上下文完全丢失,应用程序崩溃。

有没有办法在清理时破坏当前的 WebGl 上下文?还是 WebGlRenderer 在实例化时总是创建一个新的 WebGl 上下文?

我正在使用 Three.js R64。

最佳答案

您可以为不同的场景保留相同的渲染器。渲染器并不关心它将渲染什么场景。您可以提供不同的 Scene每次打电话render()如果你喜欢。

// instantiate only once and keep it
var renderer = new THREE.WebGLRenderer();

// current scene and camera. Switch whenever you like
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(...);
fillScene(scene);

// rendering always uses current scene
function render() {
renderer.render(scene, camera);
requestAnimationFrame(render);
}

/* ...
* somewhere in your application
* ...
*/
if(condition) {
// switch scene
scene = new THREE.Scene();
fillOtherScene(scene);
}

关于three.js - 清理 Threejs WebGl 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21548247/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com