使用特定的WebGL / GLSL版本运行Web浏览器

问题描述 投票:1回答:2

我想运行一些测试,以确保正在制作的某些场景将在仅支持WebGL 1.0的设备上渲染。有没有一种运行浏览器的方式,使得浏览器在运行WebGL场景时仅使用WebGL 1.0版?

我已经将version 100添加到了我的着色器的顶部,这是否是全部所需的,还是需要更多以确保使用WebGL 1.0测试场景?其他人可以提供的任何指针将不胜感激!

glsl webgl
2个回答
2
投票

在着色器顶部添加version 100不会执行任何操作。

如果使用canvas.getContext('webgl')创建了上下文,则将获得基本的WebGL 1功能。

使用WebGL 1时,具有#version 300 es的着色器将无法编译,并且许多功能将被锁定在扩展名后面。

您应该查看目标浏览器支持哪些扩展,并且仅在测试期间启用这些扩展。

但是我仍然强烈建议您在目标浏览器上进行测试,因为WebGL规范对要求支持的最低功能有相当宽松的要求。

我经常看到某些参数组合在某些浏览器上起作用,而不是在其他浏览器上起作用,即使那些浏览器支持WebGL 2。


1
投票

您使用的是某种图书馆吗?如果您使用的是原始WebGL,那么如果您要求输入“ webgl”,则总会得到webgl1。如果您要求“ webgl2”,则在设备支持的情况下会得到webgl2,但它确实not自动回退到WebGL1,因为这两个API相似但不兼容。

对于着色器,WebGL1仅支持GLSL ES 1.0。 WebGL2支持GLSL ES 1.0和GLSL ES 3.0。

就是这样。

如果要了解跨设备支持哪些功能,请参阅webglstats.com。规范中定义了最低功能,但是很少有设备支持最低功能,如果有任何设备支持最低功能,则可能会出现严重的性能问题。

© www.soinside.com 2019 - 2024. All rights reserved.