我正在尝试找到一种方法来指定three.js / WebGL中的一些抗锯齿设置,以尝试改善结果。
问题是,使用完全相同的代码,如果我在Retina显示器上加载模型,抗锯齿效果非常好(即使我之后将其移动到我的非视网膜外部监视器),但如果我的话,它都是像素化的首先将它装在非视网膜屏幕上。
这是一个截图(两者都在Chrome上,都显示在视网膜显示屏上)。左侧是视网膜上的非视网膜:https://i.imgur.com/krNavZU.png
我从中得到的是,在初始化抗锯齿时,three.js以某种方式使用像素密度。无论如何要调整这个以便我可以强迫它做更好的事情吗?
非常感谢您的帮助:)
附注:为了记录,似乎抗锯齿功能在Firefox上运行得更好,有谁知道为什么?
答案 0 :(得分:4)
万一有人想要做同样的调整,我会回答我自己的问题。
根据WaclawJasper的评论,我在Three.js中找到了与我的问题相关的一些文档。来自http://threejs.org/docs/#Reference/Renderers/WebGLRenderer:
.setPixelRatio(value)
设置设备像素比率。这通常用于HiDPI设备,以防止模糊输出画布。
我在初始化时使用renderer.setPixelRatio( window.devicePixelRatio );
,这就是为什么渲染取决于首次加载页面的原因。
与抗锯齿相关,我现在在非视网膜屏幕上使用renderer.setPixelRatio(2);
人工提高像素密度。这导致更有效的抗锯齿,但代价是计算量增加。