【问题标题】:Specify default depth buffer precision指定默认深度缓冲区精度
【发布时间】:2018-02-26 14:04:36
【问题描述】:

在 Firefox (Windows OS) 中,默认的 WebGL 上下文带有 16 位深度缓冲区,有没有办法获得至少 24 位?

【问题讨论】:

  • 你确定它在 Firefox 中是 16 位的吗?你检查得怎么样了?
  • 我确信在 Windows 上它是 16 位的,而在 Mac OS X 上它是 24 位的,您可以使用 www.webglreport.com 进行检查,这是我的结果:joxi.net/MAjMV3VIvbMe72

标签: firefox webgl


【解决方案1】:

没有正式的,没有。

但是,在创建过程中使用stencil: true 使用模板缓冲区创建上下文可能会导致它使用 24+8 格式...

但是,与其依赖在未来/在某些设备上可能无法使用的技巧,您可能希望首先研究这些选项来缓解深度测试问题:

  • 修改剪切平面设置
  • alter your depth value encoding
  • 使用DEPTH_STENCIL 渲染缓冲区或depth texture 附件渲染到帧缓冲区
  • 作为最后的手段,做 使用 32 位纹理作为深度缓冲区进行您自己的深度测试

【讨论】:

  • 你可能想添加你可以只使用带有 DEPTH_STENCIL 的渲染缓冲区,不需要扩展。 IIRC 它需要工作,我知道除了 24:8 之外没有 GPU 支持它
  • @gman 谢谢我已经添加了它,我觉得只为上下文请求模板应该也可以在没有任何帧缓冲区设置的情况下工作。
  • 有一种简单的方法可以检查深度位:depthBits: gl.getParameter(gl.DEPTH_BITS) webglreport.com/webglreport.js 在那里使用,即使模板为真,我也得到 16。所有装有 windows 10 和最新版 firefox 的 PC 总是返回 16。在 Mac OS X firefox 上返回 - 24。帧缓冲区会降低性能,但是是的,使用帧缓冲区可以手动选择深度位。也许您知道如何使用帧缓冲区而不降低性能?
【解决方案2】:

实际上,这是 Firefox 中的一个错误,这里已修复: https://bugzilla.mozilla.org/show_bug.cgi?id=1427668

在 Firefox 59 中,现在一切正常,默认情况下还是 24 位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多