无需某些WebGL扩展,Three.js能否准确呈现?

在三星操作系统的最新版本中(我正在测试Galaxy S6),Chrome禁用了WebGL.记录在文档中的原因是here.我正在使用此标志在没有黑名单的情况下运行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,使其可行?如果没有,我可以在哪里进一步阅读这些扩展,以便更好地了解它们的工作原理?

解决方法:

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

前四个扩展支持浮点纹理,即其成分组成的纹理
是浮点值.

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

看到texture_float,
texture_float_linear,
ARB_texture_float
(OES_texture_float_linear基于)
在OpenGL ES注册表中.

Three.js checks for these extensions(并在必要时输出错误消息)
 启用其功能.

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

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

This page
包括此过滤的可视化.

在这里,Three.js checks for this extension也可以查看它是否可以使用.

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

尽管Three.JS会检查这些扩展名,但它并不是天生就依赖这些扩展名才能起作用,并且仅至少一个示例需要使用它们.因此,问题不仅仅在于修改Three.js,而在于修改您的应用程序.尽管如此,还是在here, in WebGLExtensions.js生成警告.

上一篇:javascript – 如何在three.js中获取顶点的绝对位置?


下一篇:javascript – Three.js dirtyVertices不起作用