WebGL 是否支持 32 位以上的颜色格式?

Does WebGL support color formats with more than 32bit?

我似乎找不到任何超过 32 位的纹理格式 (GL.RGBA)。这是 WebGL 不支持的吗?

32 位是指每个元素本身是 32 位,或者每个元素是 8 位,总之它们是 32 位(8 位红色,8 位绿色,8 位蓝色,8 位 alpha)?

在任何情况下,WebGL 中都有 32 位浮点格式的扩展,因此 32 位红色、32 位绿色、32 位蓝色、32 位 alpha 是 128 位纹理格式。

这些扩展是

要使用其中的任何一个,您必须像

中那样启用每个
var ext = gl.getExtension("OES_texture_float");
if (!ext) {
   alertNoFloatSupportOrFallbackToOtherOption();
}

几乎所有桌面 GPU 都支持所有 4 个。移动设备通常只支持半格式,有时不支持过滤。

此外,大多数移动设备不允许呈现浮动或半浮动纹理,而台式机则可以。要检查它们是否存在,请以所需格式创建纹理,将其附加到帧缓冲区并调用 gl.checkFramebufferStatus。如果它 returns gl.FRAMEBUFFER_COMPLETE 那么你可以渲染到纹理。否则只能作为来源使用。