Javascript HTML5画布上下文

Javascript HTML5画布上下文,javascript,html,canvas,2d,Javascript,Html,Canvas,2d,我已经开始阅读/尝试HTML5。我看到的所有HTML5画布教程都遵循JavaScript按ID获取画布、获取2d上下文,然后使用上下文的模式: <canvas id="myCanvas" width="300" height="200" style="border:1px solid"></canvas> <script> var c=document.getElementById("myCanvas"); var ctx=c.getConte

我已经开始阅读/尝试HTML5。我看到的所有HTML5画布教程都遵循JavaScript按ID获取画布、获取2d上下文,然后使用上下文的模式:

 <canvas id="myCanvas" width="300" height="200" style="border:1px solid"></canvas>
 <script>
   var c=document.getElementById("myCanvas");
   var ctx=c.getContext("2d");
   ctx.fillStyle="cyan";
   ctx.fillRect(50,50,100,75);
 </script>

var c=document.getElementById(“myCanvas”);
var ctx=c.getContext(“2d”);
ctx.fillStyle=“青色”;
ctx.fillRect(50,50100,75);
我想知道是否有枚举或常量用于获取画布的上下文

类似于
Context.2D
Context.3D
,等等(我知道这不是一个真正的常量,只是想知道JavaScript或HTML5中是否有类似的东西)


我看到的每个示例,所做的调用都是
getContext(“2d”)
。这看起来很脆弱,也没有告诉我还有什么其他的上下文(如果有的话)

只调用一次
getContext
,如果画布已使用其他上下文类型初始化,则如果再次调用它,它将返回null。如果使用相同的上下文类型再次调用它,它将返回相同的上下文。如果画布不支持给定的上下文ID字符串,也会返回Null

换句话说,每个画布只有一个上下文

没有告诉我还有哪些(如果有的话)上下文可用

为此,有一种方法
supportsContext(someContextString)
,该方法在规范(2012年3月)中非常新,尚未在任何浏览器中实现

另外还有一个
setContext
,在任何浏览器中都不受支持(可能在几家夜总会中)。请注意,
setContext
仅在创建了无头上下文时才有用,因为如果您尝试设置不同的上下文,已经有上下文(通过使用getContext)的画布将抛出错误

无论如何,参数是字符串的原因是允许对画布进行特定于浏览器的扩展。毕竟,微软可能想要实现
getContext('2d-directx')
(他们可能永远不会真正做到这一点)


这些天你看到的唯一字符串是
“2d”
“webgl”
,和
“webgl实验”

我想现在只是
2d
webgl
。@paul谢谢你通知我关于webgl的事。。。我不知道这是可以传递的字符串之一。我假设它是“3d”。这是一个信息量极大的答案,谢谢你分享所有这些伟大的信息。我从未听说过
supportsContext
方法或还不支持的setContext。