有些网站说你应该通过以下方式初始化webgl:
var gl = c.getContext("webgl") || c.getContext("experimental-webgl");
if (!gl)
alert("This browser doesn't support WebGL!");
Run Code Online (Sandbox Code Playgroud)
webgl和之间有什么区别experimental-webgl?我能找到的唯一描述是在MDN上:
getContext(在DOMString contextId中)RenderingContext返回画布上的绘图上下文,如果不支持上下文ID,则返回null.绘图上下文允许您在画布上绘图.使用"2d"调用getContext将返回CanvasRenderingContext2D对象,而使用"experimental-webgl"(或"webgl")调用它将返回WebGLRenderingContext对象.此上下文仅适用于实现WebGL的浏览器.
然而,这使得2看起来像是一样的.有区别吗?
gma*_*man 13
TL; DR:"experimental-webgl"= beta,浏览器在WebGL 1.0发布之前使用它来试图表明这不是最终的.当WebGL 1.0发布并且浏览器通过所有一致性测试时,该浏览器将开始接受"webgl",而"experimental-webgl"将只是一个同义词并且已被弃用.
长版:
浏览器供应商过去常常为尚未标准化或完整的内容添加前缀.希望是开发人员会尝试一下.当标准最终确定时,前缀将被删除,并且每个人都将仅使用未加前缀的版本.前缀"experimental-"从那个时代遗留下来.浏览器供应商发现前缀是一个坏主意,因为1000个网站会在生产网站中使用前缀,然后浏览器无法删除前缀而不会破坏数千个网站.
浏览器供应商普遍同意不再这样做.相反,他们将新功能放在标志后面,要求开发人员测试,当浏览器供应商和标准委员会合理地确定一切都很好并且稳定时,他们允许新功能在没有标志的情况下运行.WebGL2以这种新方式完成,因此没有"experimental-webgl2",只是浏览器标志.
唯一仍然需要"experimental-webgl"的浏览器是Edge.它使用它只是因为Edge仍然没有实现整个WebGL规范.对于所有其他浏览器,"experimental-webgl"与"webgl"完全相同,它只是旧时代的遗留物
就个人而言,我根本不再使用"experimental-webgl".这意味着我的代码在Edge实际符合标准之前不会在Edge中运行.IMO他们需要网站的压力,不能让他们花费资源来修复他们破碎的实施,因为它已经被打破多年了.
| 归档时间: |
|
| 查看次数: |
3216 次 |
| 最近记录: |