Tho*_*ner 18
Mozilla Developer Netowrk(MDN)文档说:
getContext(在DOMString contextId中)RenderingContext返回画布上的绘图上下文,如果不支持上下文ID,则返回null.绘图上下文允许您在画布上绘图.使用" 2d " 调用getContext 将返回CanvasRenderingContext2D对象,而使用" experimental-webgl "(或" webgl ")调用它将返回WebGLRenderingContext对象.此上下文仅适用于实现WebGL的浏览器.
结果:
| Context | Chrome (webkit) | Firefox (gekko) |
| ------------------ | ------------------------ | ------------------------ |
| 2d | CanvasRenderingContext2D | CanvasRenderingContext2D |
| 3d | null | null |
| webgl | WebGLRenderingContext | WebGLRenderingContext |
| experimental-webgl | WebGLRenderingContext | null |
我建议您阅读webgl wiki:http://www.khronos.org/webgl/wiki/FAQ
这里是完整的初始化WebGL的推荐方法是什么?部分:(虽然我建议你直接从维基读取它,以防它发生变化!)
建议您检查初始化是成功还是失败.如果WebGL无法初始化,建议您区分失败,因为浏览器不支持WebGL,而其他原因导致失败.如果浏览器不支持WebGL,则向用户显示" http://get.webgl.org " 链接.如果WebGL因其他原因失败,则会向用户显示" http://get.webgl.org/troubleshooting/ " 链接
您可以通过检查WebGLRenderingContext是否存在来确定浏览器是否支持WebGL.
if (window.WebGLRenderingContext) {
// browser supports WebGL
}
Run Code Online (Sandbox Code Playgroud)
如果浏览器支持WebGL并且canvas.getContext("webgl")返回null,则WebGL因用户浏览器以外的某些原因失败(没有GPU,内存不足等等)
if (!window.WebGLRenderingContext) {
// the browser doesn't even know what WebGL is
window.location = "http://get.webgl.org";
} else {
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("webgl");
if (!ctx) {
// browser supports WebGL but initialization failed.
window.location = "http://get.webgl.org/troubleshooting";
}
}
Run Code Online (Sandbox Code Playgroud)
注意:您必须检查浏览器是否支持WebGL以了解从canvas.getContext()获取null意味着 有一个包装器将在此处为您完成所有这些操作.
使用包装器的示例
<html>
<body>
<script type="text/javascript" src="localpath/webgl-utils.js"></script>
<script>
function init() {
canvas = document.getElementById("c");
gl = WebGLUtils.setupWebGL(canvas);
if (!gl) {
return;
}
...
}
window.onload = init;
</script>
<canvas id="c"></canvas>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)