Three.js 使用threejs的超级样本抗锯齿

Three.js 使用threejs的超级样本抗锯齿,three.js,webgl,Three.js,Webgl,我想以画布分辨率的两倍渲染场景,然后在显示之前缩小其比例。我如何使用threejs实现这一点?以下是您可能的解决方法:在three.js初始化代码中,当您创建渲染器时,将其设置为主画布尺寸的两倍,并将其设置为渲染到主画布两倍大的次隐藏画布元素。在辅助画布上执行必要的图像操作,然后在主画布上显示结果。这是我的解决方案。源评论应该解释发生了什么。设置(初始化): 将动画循环更改为: // Manually clear you canvas. renderer.clear(); // Tell th

我想以画布分辨率的两倍渲染场景,然后在显示之前缩小其比例。我如何使用threejs实现这一点?

以下是您可能的解决方法:在three.js初始化代码中,当您创建渲染器时,将其设置为主画布尺寸的两倍,并将其设置为渲染到主画布两倍大的次隐藏画布元素。在辅助画布上执行必要的图像操作,然后在主画布上显示结果。

这是我的解决方案。源评论应该解释发生了什么。设置(初始化):

将动画循环更改为:

// Manually clear you canvas.
renderer.clear();

// Tell the composer to produce an image for us. It will provide our renderer with the result.
composer.render();
注意:EffectComposer、RenderPass、ShaderPass和CopyShader不是默认three.js文件的一部分。除了3.js之外,还必须包含它们。在撰写本文时,可以在“示例”文件夹下的项目中找到这些示例:

/examples/js/postprocessing/EffectComposer.js
/examples/js/postprocessing/RenderPass.js
/examples/js/postprocessing/ShaderPass.js
/examples/js/shaders/CopyShader.js

对我来说,拥有一个完美的AA而不需要太多工作的最佳方式(见下面的代码) 附言:如果你增加超过2,它开始变得太尖锐了

renderer=new THREE.WebGLRenderer({抗锯齿:true})

渲染器.setPixelRatio(window.devicePixelRatio*1.5)

既然三个问题已经经历了几代人的发展,这是一个更为现代的答案(并不是要削弱旧答案的独创性)
/examples/js/postprocessing/EffectComposer.js
/examples/js/postprocessing/RenderPass.js
/examples/js/postprocessing/ShaderPass.js
/examples/js/shaders/CopyShader.js