40 lines
1.2 KiB
JavaScript
40 lines
1.2 KiB
JavaScript
'use strict';
|
|
|
|
var adapter = require('../../environment/adapter.js');
|
|
var AbstractRenderer = require('../../rendering/renderers/shared/system/AbstractRenderer.js');
|
|
|
|
"use strict";
|
|
let _isWebGLSupported;
|
|
function isWebGLSupported(failIfMajorPerformanceCaveat) {
|
|
if (_isWebGLSupported !== void 0)
|
|
return _isWebGLSupported;
|
|
_isWebGLSupported = (() => {
|
|
const contextOptions = {
|
|
stencil: true,
|
|
failIfMajorPerformanceCaveat: failIfMajorPerformanceCaveat ?? AbstractRenderer.AbstractRenderer.defaultOptions.failIfMajorPerformanceCaveat
|
|
};
|
|
try {
|
|
if (!adapter.DOMAdapter.get().getWebGLRenderingContext()) {
|
|
return false;
|
|
}
|
|
const canvas = adapter.DOMAdapter.get().createCanvas();
|
|
let gl = canvas.getContext("webgl", contextOptions);
|
|
const success = !!gl?.getContextAttributes()?.stencil;
|
|
if (gl) {
|
|
const loseContext = gl.getExtension("WEBGL_lose_context");
|
|
if (loseContext) {
|
|
loseContext.loseContext();
|
|
}
|
|
}
|
|
gl = null;
|
|
return success;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
})();
|
|
return _isWebGLSupported;
|
|
}
|
|
|
|
exports.isWebGLSupported = isWebGLSupported;
|
|
//# sourceMappingURL=isWebGLSupported.js.map
|