OES_texture_float 在移动端的 WebGL 中

OES_texture_float in WebGL on Mobile

我使用 OES_texture_float 纹理在 WebGL 中制作了延迟着色渲染器来存储 G 缓冲区数据。

此功能显然适用于 PC 浏览器(Chrome,Firefox,Safari,Edge...) 但是,这个G-buffer在移动浏览器中似乎不起作用。

我试图找出原因,但我无法做到。这就是我调试它的方式。

我当然这么做了。我确保我的调试设备支持 OES_texture_float。 我尝试了 getExtension 并且该方法没有 return 未定义。

我还查看了该网站以检查 WebGL 扩展兼容性(http://renderingpipeline.com/webgl-extension-viewer/)。

我无法为移动浏览器执行此操作。但是,在 Chrome PC 中,读取浮点值纹理的 readPixels 工作正常。

我想即使支持 OES_texture_float,这些类型的纹理的 readPixels 也不能保证工作。

我知道这很难回答,但我无法在此处粘贴我的代码,因为这些代码非常庞大。现在我猜 OES_texture_float 只是支持从纹理中获取纹理值,例如 texture2D(floatingTexture,uv) 而不是确保用于渲染纹理本身。

我想要任何调试建议。而且,如果您知道任何使用浮动值纹理并在移动设备上工作的示例,请粘贴 url 以工作。我想检查一下。

您检查过您是否可以渲染到浮点纹理?我不认为你可以在手机上。

在创建带有附加浮点纹理的帧缓冲区后,您是否调用 gl.checkFramebufferStatus 并检查结果是否为 gl.FRAMEBUFFER_COMPLETE?如果不完整,则硬件不支持渲染为浮点纹理。