Mah*_*dri 8 javascript canvas webgl
如何知道画布是运行"WebGL"还是普通画布?
从检查来源,我发现它在任何一种情况下都是画布......
stackover流程似乎阻止我提交问题,除非它足够长所以这段只是为了满足stackoverflow人.
这真的取决于你想如何去发现。
例如,您可以像这样调用“getContext”
if (someCanvas.getContext("2d")) {
// It's a 2D canvas
} else if (someCanvas.getContext("experimental-webgl") ||
someCanvas.getContext("webgl")) {
// It's a WebGL canvas
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果之前没有人调用getContext.
另一种选择是你可以像这样包装 getContext
(function() {
var originalGetContextFunction = HTMLCanvasElement.prototype.getContext;
HTMLCanvasElement.prototype.getContext = function() {
var type = arguments[0];
var ctx = originalGetContextFunction.apply(this, arguments);
if (ctx && !this.canvasType) {
this.canvasType = type;
}
return ctx;
};
}());
Run Code Online (Sandbox Code Playgroud)
现在,对于任何画布,您都可以检查someCanvas.canvasType以找出传入的字符串getContext。例子:
var c1 = document.createElement("canvas");
var c2 = document.createElement("canvas");
var ctx = c1.getContext("2d");
var gl = c2.getContext("experimental-webgl");
alert("c1 is " + c1.canvasType + ", c2 is " + c2.canvasType);
Run Code Online (Sandbox Code Playgroud)
只需确保在创建画布的任何代码之前包含包装器。
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |