我正在通过threejs处理粒子,我在不同的设备上得不到相同的结果。在其他屏幕上,点大小看起来更小,在我的智能手机上相同,仅在垂直方向上。虽然我在几个不同的屏幕上看到了这个问题,但我只用笔记本电脑+智能手机测试了以下实验。
左 :正确查看某些屏幕上的实际代码&在我的智能手机上水平方向。 正确 :使用其他屏幕上的实际代码看错误&我的智能手机处于垂直方向。
我首先认为它与window.devicePixelRatio
有关但alert(window.devicePixelRatio)
在我的智能手机中以两种方向打印相同的数字(3
),尽管渲染只在水平方向正确之一。
我进一步尝试了:
renderer.setPixelRatio(window.devicePixelRatio)
:两个方向的效果图显示的尺寸缩小了3倍,但仍然不同。
将window.devicePixelRatio
传递给顶点着色器以编写类似gl_PointSize*=devicePixelRatio
的内容,除了之前的想法之外,还会将此大小问题恢复到初始状态。
如何让每个屏幕上的粒子看起来都一样?
的整个代码答案 0 :(得分:1)
在调整足够大的窗口后,我理解gl_PointSize
以某种方式表示绝对大小,而在我的示例中,我希望它与window.innerHeight
成比例。我在着色器中添加了这个值:gl_PointSize*=innerHeight
解决了这个问题。