Opengl es 移动设备上WebGL中的OES\u纹理\u浮动
我在WebGL中使用OES_纹理_浮动纹理制作延迟着色渲染器来存储G缓冲区数据 这项功能在PC浏览器(Chrome、Firefox、Safari、Edge等)中明显有效 但是,这种G缓冲区在移动浏览器中似乎不起作用 我试图找出原因,但没能成功。我就是这样调试的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获取浮点
- 检查是否支持OES\u纹理\u浮动
- 我尝试用readPixels获取浮点值纹理的像素
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
,但实际上实施它会破坏许多现有页面,因此无法实现。因此,这不是一个批准的扩展