【发布时间】:2020-05-09 02:12:15
【问题描述】:
我想运行一些测试以确保我制作的某些场景能够在仅支持 WebGL 1.0 的设备上呈现。有没有办法让浏览器在运行 WebGL 场景时只使用 WebGL 1.0 版?
我已经在我的着色器顶部添加了version 100——这就是所有必需的,还是需要更多来确保使用 WebGL 1.0 测试场景?其他人可以提供的任何指针将不胜感激!
【问题讨论】:
我想运行一些测试以确保我制作的某些场景能够在仅支持 WebGL 1.0 的设备上呈现。有没有办法让浏览器在运行 WebGL 场景时只使用 WebGL 1.0 版?
我已经在我的着色器顶部添加了version 100——这就是所有必需的,还是需要更多来确保使用 WebGL 1.0 测试场景?其他人可以提供的任何指针将不胜感激!
【问题讨论】:
在着色器之上添加version 100 没有任何作用。
如果您使用 canvas.getContext('webgl') 创建上下文,您将获得基本的 WebGL 1 功能。
使用 WebGL 1 时,具有 #version 300 es 的着色器将无法编译,并且许多功能将被锁定在扩展之后。
您应该查看目标浏览器支持哪些扩展,并仅在测试期间启用这些扩展。
但我仍然强烈建议在您的目标浏览器上进行测试,因为 WebGL 规范对需要支持的最少功能的要求相当宽松。
我经常看到某些参数组合在某些浏览器上有效,而在其他浏览器上无效,即使这些浏览器支持 WebGL 2。
【讨论】:
您在使用某种库吗?如果您正在使用原始 WebGL,那么如果您要求“webgl”,您总是会得到 webgl1。如果您询问“webgl2”,如果设备支持它,您会得到 webgl2,但它确实不自动回退到 WebGL1,因为这 2 个 API 相似但不兼容。
至于着色器,WebGL1 仅支持 GLSL ES 1.0。 WebGL2 支持 GLSL ES 1.0 和 GLSL ES 3.0。
就是这样。
如果您想了解跨设备支持哪些功能,请参阅webglstats.com。规范中定义了最低功能,但很少有设备支持最低功能,如果有任何设备支持最低功能,它们可能会出现严重的性能问题。
【讨论】: