Three.js 可以在没有某些 WebGL 扩展的情况下准确呈现吗?

jon*_*br1 5 mobile android webgl three.js samsung-mobile

在三星操作系统的最新版本中(我正在使用 Galaxy S6 进行测试),Chrome 禁用了 WebGL。原因在此处记录。我正在使用此标志运行没有黑名单的 Chrome:

--ignore-gpu-blacklist

在此处输入图片说明

这些是 Three.js 向我吐槽的错误。我很想知道如果这些 OES 扩展不存在, Three.js 是否可以成功运行/渲染:

  • OES_texture_float
  • OES_texture_float_linear
  • OES_texture_half_float
  • OES_texture_half_float_linear
  • OES_texture_filter_anisotropic

如果是这样,我将如何更改 Three.js 以便它可以工作?如果没有,我在哪里可以进一步阅读这些扩展,以便更好地了解它们的工作原理?

Pet*_* O. 5

所有这五个扩展都通过以下方式处理纹理:

前四个扩展支持浮点纹理,即分量为浮点值的纹理。

  • OES_texture_float 表示具有最近邻过滤的 32 位浮点纹理。
  • OES_texture_float_linear 表示具有线性过滤的 32 位浮点纹理。
  • OES_texture_half_float 表示具有最近邻过滤的 16 位浮点纹理。
  • OES_texture_half_float_linear 表示具有线性过滤的 16 位浮点纹理。

请参阅OpenGL ES 注册表中的texture_float、 texture_float_linear和ARB_texture_float (OES_texture_float_linear基于)。

Three.js检查这些扩展(并在必要时输出错误消息)以启用它们的功能。


最后一个扩展(称为EXT_texture_filter_anisotropic)提供了对各向异性过滤的支持,它可以在过滤某些类型的纹理时提供更好的质量。

注册表:https : //www.khronos.org/registry/gles/extensions/EXT/texture_filter_anisotropic.txt

此页面 包含此过滤的可视化。

在这里,Three.js 也会检查这个扩展是否可以使用。


对于所有这些扩展,“改变 Three.js”是否有意义取决于您的应用程序。例如,您的应用程序的某些效果是否需要浮点纹理?(您可以通过检查您是否使用THREE.HalfFloatType或来检查THREE.FloatType。)

虽然 Three.JS 会检查这些扩展,但它本质上并不依赖于这些扩展才能工作,并且至少只有一个示例需要使用它们。因此,问题不在于修改 Three.js,而在于修改您的应用程序。尽管如此,在 WebGLExtensions.js 中,这里是生成警告的地方。