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