Javascript 重新初始化THREE.WebGLRenderer以切换抗锯齿
所以我想要一个简单的解决方案。一个切换按钮,可根据用户的需要刷新Three.js场景,前提是用户是否需要场景的抗锯齿版本。我的Javascript 重新初始化THREE.WebGLRenderer以切换抗锯齿,javascript,three.js,Javascript,Three.js,所以我想要一个简单的解决方案。一个切换按钮,可根据用户的需要刷新Three.js场景,前提是用户是否需要场景的抗锯齿版本。我的刷新\u场景功能如下: function refresh_scene() { scene.remove( floor ); floor.geometry.dispose(); floor.material.dispose(); floor = null; scene.dispose(); scene = null;
刷新\u场景
功能如下:
function refresh_scene()
{
scene.remove( floor );
floor.geometry.dispose();
floor.material.dispose();
floor = null;
scene.dispose();
scene = null;
controls.dispose();
controls = null;
camera = null;
renderer.dispose();
renderer = null;
canvas = null;
cancelAnimationFrame(reqAnimFrame);
visualizer();
}
每次按下按钮时都会调用此函数。然后,visualizer()
将再次显示所有对象。这还包括获取画布、创建新渲染器、新场景等。出于某种原因,新渲染器不显示场景的抗锯齿版本,而是反复显示同一场景,尽管“切换”按钮切换一个随后在可视化工具()中使用的抗锯齿值
根据新值重新初始化渲染器的函数:
renderer = new THREE.WebGLRenderer({canvas, antialias: antialiasing_});
其中,抗锯齿
是切换true
或false
的布尔值。我做错什么了吗?任何帮助都将不胜感激。如果需要,可以上载代码的其他部分。在项目
选项卡中提供了一个选项,用于启用/禁用抗锯齿。它毫无问题地工作。因此,您的应用程序中似乎存在问题。不幸的是,到目前为止,你所分享的并不清楚到底出了什么问题。考虑用一个简单的可编辑的实况示例来演示这个问题。确保您的设备支持反别名(可以在驱动程序级别关闭或者在浏览器中被列入黑名单)(用于Chrome检查)chrome://gpu/ ))该规范说“如果该值为真,且实现支持抗锯齿…”我假设true
表示truthy,但最好使用true
而不是truthy
。如果antialias是未定义的
并且在获取上下文时保持truthy和falsy值不变,则只有三种力量false
。请参阅我快速地挖掘代码,您可以看到,正在更改的反别名设置需要重新创建渲染器。