如何知道畫布是運行「WebGL」還是普通畫布?如何知道畫布是普通畫布還是webgl畫布
從檢查源,我覺得在這兩種情況下畫布...
的stackover流似乎不讓我提交的問題,除非它足夠長,所以這一段是隻是爲了滿足計算器傢伙。
如何知道畫布是運行「WebGL」還是普通畫布?如何知道畫布是普通畫布還是webgl畫布
從檢查源,我覺得在這兩種情況下畫布...
的stackover流似乎不讓我提交的問題,除非它足夠長,所以這一段是隻是爲了滿足計算器傢伙。
如果你做canvas.getContext('2d')
並且它返回null
它不是2d上下文,對於其他上下文類型也是如此。另一方面,如果上下文尚未創建,它將創建上下文。
畫布不會運行任何東西 - 在這兩種情況下,它只是一個帶有可修改位圖的元素。它本身不能告訴它被用於什麼。
帆布可以爲您提供上下文雖然它可以是。如果你因爲某些原因正在請求的情況下是不能在源代碼,看看你隨時可以測試的背景(有點落後,但在這裏不用):
if (ctx === null) {
return 'unsupported';
}
else if (typeof ctx.viewport === 'undefined' && // test some existing non-shared
typeof ctx.arc !== 'undefined') { // method names
return '2d';
}
else if (typeof ctx.viewport !== 'undefined' &&
typeof ctx.arc === 'undefined') {
return 'webgl';
}
else {
return 'unknown';
}
測試爲WebGLRenderingContext
不會爲幫助這個測試支持在瀏覽器。即使瀏覽器支持WebGL,也不會得到WebGL上下文,因爲這取決於計算機及其硬件功能。
這意味着我無法知道當前在我的瀏覽器中運行的畫布是否使用webgl,只是通過檢查元素?沒有讓我的手髒的JavaScript? –
@MahmoudBadri所使用的代碼應該顯示正在使用的內容:)您可以搜索2d或webgl(或experimental-webgl)以在源代碼中找到它(點擊ctrl + u獲取頁面的源代碼)。 – K3N
是的,我知道,但它是一個名爲pixijs的js庫,默認情況下它使用webgl並回退到canvas。我只是想知道它是否正在瀏覽器中使用webgl或canvas) –
這真的取決於你想如何去尋找。
例如,你可以調用`的getContext」這樣
if (someCanvas.getContext("2d")) {
// It's a 2D canvas
} else if (someCanvas.getContext("experimental-webgl") ||
someCanvas.getContext("webgl")) {
// It's a WebGL canvas
}
不幸的是,也將使得畫布2D畫布,如果沒有人以前稱爲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;
};
}());
現在對於任何畫布,您可以檢查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);
只要確保在創建畫布的代碼之前包含包裝器。
尋找window.WebGLRenderingContext。 更多[info](http://stackoverflow.com/questions/13938600/what-is-window-webglrenderingcontext) – palanik