gl_PointSize随devicePixelRatio而变化?

时间:2015-09-01 13:54:10

标签: three.js webgl particles

我正在通过threejs处理粒子,我在不同的设备上得不到相同的结果。在其他屏幕上,点大小看起来更小,在我的智能手机上相同,仅在垂直方向上。虽然我在几个不同的屏幕上看到了这个问题,但我只用笔记本电脑+智能手机测试了以下实验。

Correct look for certain screens bad look on others

:正确查看某些屏幕上的实际代码&在我的智能手机上水平方向。 正确 :使用其他屏幕上的实际代码看错误&我的智能手机处于垂直方向。

我首先认为它与window.devicePixelRatio有关但alert(window.devicePixelRatio)在我的智能手机中以两种方向打印相同的数字(3),尽管渲染只在水平方向正确之一。

我进一步尝试了:

  • renderer.setPixelRatio(window.devicePixelRatio):两个方向的效果图显示的尺寸缩小了3倍,但仍然不同。

  • window.devicePixelRatio传递给顶点着色器以编写类似gl_PointSize*=devicePixelRatio的内容,除了之前的想法之外,还会将此大小问题恢复到初始状态。

如何让每个屏幕上的粒子看起来都一样?

http://codepen.io/Astrak/pen/BoBWPB

的整个代码

1 个答案:

答案 0 :(得分:1)

在调整足够大的窗口后,我理解gl_PointSize以某种方式表示绝对大小,而在我的示例中,我希望它与window.innerHeight成比例。我在着色器中添加了这个值:gl_PointSize*=innerHeight解决了这个问题。