WebGL 1.0的{24}深度缓冲区

时间:2017-11-05 15:59:34

标签: webgl opengl-es-2.0

我发现WebGL中没有GL_DEPTH_COMPONENT24_OES renderbuffer存储等价物。但是我可以使用WEBGL_depth_texture扩展来制作24_8或32位深度纹理。那些DEPTH_COMPONENT24 / DEPTH_COMPONENT32渲染缓冲区是等效的吗?它会像屏幕缓冲区一样工作吗?

这就是他们没有为WebGL制作24 / 32bit深度渲染缓冲的原因吗?

2 个答案:

答案 0 :(得分:1)

有一种方法可以在WebGL 1中分配24位深度缓冲区:DEPTH_STENCIL。这是一个测试:http://jsbin.com/tadikibidi/edit?js,output这不是真的。虽然规范没有明确指定DEPTH_STENCIL缓冲区组件的大小,但一致性测试表明DEPTH唯一的要求是STENCIL具有> = 16位且> = 8位DEPTH_STENCIL 1}}。似乎唯一的方法(至少没有扩展名)是分配DEPTH_BITS附件并检查附件附加到的帧缓冲区的INTERVAL '12' HOUR参数。

AFAIK,32位深度缓冲更难以上传移动设备,因此WebGL没有它们(仅限扩展)。

答案 1 :(得分:0)

规范没有说明的是DEPTH_STENCIL只是一个抽象。 WebGL实现,特别是较旧的实现,可以通过捆绑一个深度缓冲区和一个模板缓冲区来实现DEPTH_STENCIL。所以DEPTH_STENCIL渲染缓冲区可以是任何东西:16/8(如果不支持24),24/8(带扩展名),依此类推。一致性测试表明深度缓冲区至少为16位。

他们提出了这种抽象概念,甚至没有简单地解释它是什么。只是这条线突然出现了:

  

WebGL添加了DEPTH_STENCIL renderbuffer

The mailing list archive