Opengl es 移动设备上WebGL中的OES\u纹理\u浮动

Opengl es 移动设备上WebGL中的OES\u纹理\u浮动,opengl-es,webgl,opengl-es-2.0,Opengl Es,Webgl,Opengl Es 2.0,我在WebGL中使用OES_纹理_浮动纹理制作延迟着色渲染器来存储G缓冲区数据 这项功能在PC浏览器(Chrome、Firefox、Safari、Edge等)中明显有效 但是,这种G缓冲区在移动浏览器中似乎不起作用 我试图找出原因,但没能成功。我就是这样调试的 检查是否支持OES\u纹理\u浮动 当然是我干的。我确保我的调试设备支持OES\u纹理\u浮动。 我尝试获取扩展,但该方法没有返回undefined 我还查看了网站,查看WebGL扩展兼容性() 我尝试用readPixels获取浮点

我在WebGL中使用OES_纹理_浮动纹理制作延迟着色渲染器来存储G缓冲区数据

这项功能在PC浏览器(Chrome、Firefox、Safari、Edge等)中明显有效 但是,这种G缓冲区在移动浏览器中似乎不起作用

我试图找出原因,但没能成功。我就是这样调试的

  • 检查是否支持OES\u纹理\u浮动
当然是我干的。我确保我的调试设备支持OES\u纹理\u浮动。 我尝试获取扩展,但该方法没有返回undefined

我还查看了网站,查看WebGL扩展兼容性()

  • 我尝试用readPixels获取浮点值纹理的像素
我无法为移动浏览器执行此操作。但是,在Chrome in PC中,readPixels读取浮点值纹理的功能正常

我猜即使支持OES_texture_float,也无法确保这些类型纹理的readPixels正常工作

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


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

您是否检查过是否可以渲染为浮点纹理?我认为你不能用手机


创建带有浮点纹理的帧缓冲区后,是否调用
gl.checkFramebufferStatus
,并检查结果是否为
gl.framebuffer\u COMPLETE
?如果未完成,则硬件不支持渲染为浮点纹理。

哦,我没有编写我在移动设备上调试的设备。我用的是iPhone6SPlus和华硕zenfone(我不记得zenfone的版本号了)。你在控制台上用它会收到任何警告吗?当然,如果支持浮点纹理,您应该能够
readPixels
,但是如果渲染到浮点纹理,您应该检查并启用
WEBGL\u color\u buffer\u float
扩展。检查这个答案。此外,您还可以通过避免G缓冲区中的浮动来解决此问题。根据您希望在G缓冲区中存储的内容,有多种打包策略可用。还要检查您的设备是否支持MRT。如果不支持MRT,则绘制浮动的可能性为~0%。哦,我不知道还有这样一个扩展
WEBGL\u color\u buffer\u float
。我想这就是原因…这就是答案!但是,为什么浏览器在调用gl.getExtension(“WEBGL\u color\u buffer\u float”)时会返回null,即使浏览器支持该功能?据我所知,没有浏览器费心实现
WEBGL\u color\u buffer\u float
。说来话长。基本上,他们添加了
OES\u texture\u float
,人们在检查帧缓冲区状态后开始渲染浮点纹理。只是后来有人指出,
OES_texture_float
不足以允许渲染浮动纹理,因为规范规定颜色限制为0.0到1.0。因此,他们添加了
WEBGL\u color\u buffer\u float
,但实际上实施它会破坏许多现有页面,因此无法实现。因此,这不是一个批准的扩展