【问题标题】:gl_PointSize changing with devicePixelRatio?gl_PointSize 随 devicePixelRatio 变化?
【发布时间】:2015-09-01 13:54:10
【问题描述】:

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

:在某些屏幕和我的智能手机上以水平方向正确查看实际代码。 :在其他屏幕和我的智能手机在垂直方向上的实际代码看起来不正确。

我最初认为它与window.devicePixelRatio 有关,但alert(window.devicePixelRatio) 在我的智能手机中以两个方向打印相同的数字 (3),尽管渲染仅在水平方向上是正确的。

我进一步尝试:

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

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

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

完整代码http://codepen.io/Astrak/pen/BoBWPB

【问题讨论】:

    标签: three.js webgl particles


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多