Firefox 指定默认深度缓冲区精度

Firefox 指定默认深度缓冲区精度,firefox,webgl,Firefox,Webgl,在Firefox(Windows操作系统)中,默认的WebGL上下文带有一个16位深度缓冲区,有没有办法获得至少24位的深度缓冲区?没有官方的,没有 但是,在创建过程中使用stencil:true使用模具缓冲区创建上下文可能会导致使用24+8格式 但是,与依赖可能在将来/在某些设备上失败的技巧不同,您可能希望首先研究这些选项以缓解深度测试问题: 修改剪辑平面设置 使用DEPTH_模具renderbuffer或附件渲染到帧缓冲区 作为最后的手段,你要做什么 使用32位纹理作为深度缓冲区进行自己

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

没有官方的,没有

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

但是,与依赖可能在将来/在某些设备上失败的技巧不同,您可能希望首先研究这些选项以缓解深度测试问题:

  • 修改剪辑平面设置
  • 使用
    DEPTH_模具
    renderbuffer或附件渲染到帧缓冲区
  • 作为最后的手段,你要做什么 使用32位纹理作为深度缓冲区进行自己的深度测试

实际上,这是Firefox中的一个bug,在这里修复了:


在Firefox 59中,所有功能现在都可以正常工作了,默认为24位。

您可能需要添加,您可以使用带有深度模具的renderbuffer,无需扩展。IIRC它需要工作,据我所知,除了24小时以外,没有任何GPU支持这一功能:8@gman感谢我添加了它,我觉得在没有任何帧缓冲区设置的情况下,为上下文请求模具也可以正常工作。有一种简单的方法可以检查深度位:depthBits:gl.getParameter(gl.Depth_位)在那里使用,我得到16,即使模板是真的。所有装有windows 10和最新firefox的电脑都会返回16。在Mac OS X firefox上返回-24。帧缓冲区是一种性能下降,但是是的,使用帧缓冲区可以手动选择深度位。也许你知道如何在不降低性能的情况下使用帧缓冲区吗?你确定firefox中是16位吗?您是如何检查的?我确信在windows上它是16位的,在Mac OS X上它是24位的,您可以使用www.webglreport.com来检查它。下面是我的结果:joxi.net/MAjMV3VIvbMe72